发送没有数据的ajax请求,PHP检查isset

时间:2019-02-20 19:02:51

标签: php jquery ajax

我现在有下面的这段代码可以正常工作。我想要的是删除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>

1 个答案:

答案 0 :(得分:1)

HTTP(使用AJAX)请求的主要优点是,您不必重新加载页面或重定向用户即可向服务器传递信息。 here可以找到其他一些优点和更多信息。请注意,在运行任何javascript之前,都会运行php代码。

如果您不想使用HTTP请求,则可以使用多种解决方案。这是我的:

除了这种HTTP请求,您还可以将formmethod="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)。