我现在有下面的这段代码可以正常工作。我想要的是删除URL并在同一页面上处理ajax请求。由于我没有发送任何数据,当我的ajax函数准备好向数据库发送请求时,如何进行php检查?
我正在使用jquery mousedown按住按钮,然后在1秒钟后用户收到删除提示。如果用户在列表上按住按钮5,它将删除mysql表中的第5行,按钮10将删除第10行,依此类推。
$("#outter_div_5").mousedown('#button_5', function(e) {
clearTimeout(this.downTimer);
this.downTimer = setTimeout(function() {
var prompt_user = prompt('Enter "e" to Edit \nEnter "d" to Delete');
if (prompt_user== "d")
{
$.ajax({
url: './ajax/5/delete.php', // <-- I want to remove this line and process this ajax request on the same page
type:'POST',
data: {},
success:function(result){
$("outter_div_5").fadeOut(125);
},
complete:function(data){
$.ajax({
url:'reload_table.php',
method:'POST',
success:function(data){
// reload javascript variables and html table
$("#my_table").html(data);
}
});
}
});
}
}, 1000);
}).mouseup(function(e) {
clearTimeout(this.downTimer);
});
我的delete.php页面是一个简单的mysql查询,由于我没有传递任何数据,所以我没有使用php isset。
include_once './includes/db.inc.php';
$sql = "UPDATE my_table SET row = '' WHERE id = '5' ";
mysqli_query($conn,$sql);
我需要创建一个php isset,以便可以在同一页面上处理此ajax请求。我该怎么办?
<?php
if( isset($_POST['']) ){
$sql = "UPDATE my_table SET row = '' WHERE id = '5' ";
mysqli_query($conn,$sql);
}
?>
<script>
$("#outter_div_5").mousedown('#button_5', function(e) {
clearTimeout(this.downTimer);
this.downTimer = setTimeout(function() {
var prompt_user = prompt('Enter "e" to Edit \nEnter "d" to Delete');
if (prompt_user== "d")
{
$.ajax({
url: './ajax/5/delete.php', // <-- I want to remove this line and process this ajax request on the same page
type:'POST',
data: {},
success:function(result){
$("outter_div_5").fadeOut(125);
},
complete:function(data){
$.ajax({
url:'reload_table.php',
method:'POST',
success:function(data){
// reload javascript variables and html table
$("#my_table").html(data);
}
});
}
});
}
}, 1000);
}).mouseup(function(e) {
clearTimeout(this.downTimer);
});
</script>
答案 0 :(得分:1)
HTTP(使用AJAX)请求的主要优点是,您不必重新加载页面或重定向用户即可向服务器传递信息。 here可以找到其他一些优点和更多信息。请注意,在运行任何javascript之前,都会运行php代码。
如果您不想使用HTTP请求,则可以使用多种解决方案。这是我的:
除了这种HTTP请求,您还可以将form
与method="POST"
(read all about that)配合使用,并在提交前使用提示:
$("#delete_button").click(function( event ){
event.preventDefault();
var prompt_user = prompt('Enter "e" to Edit \nEnter "d" to Delete');
if (prompt_user == "d") {
console.log("submitted");
//$("#myForm").submit();
}else if( prompt_user == "e" ) {
console.log("editing");
// Add your actions for editing the thing you want to edit.
}else {
console.log("aborted");
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<form id="myForm" action="" method="POST">
<!-- You can add inputs here to add to your POST
This data can be read when the form is submitted and the page is consequently reloaded. -->
<input id="delete_button" type="submit" value="delete">
</form>
但是,如果我说实话,我会坚持使用HTTP请求,因为这可以提供更流畅的用户体验。 我了解您是个初学者,所以如果您不了解某些内容,请随时提问,我们都去过那里(也许我还在那儿:p)。