PHP文件未从AJAX接收数据

时间:2019-02-23 02:21:07

标签: php jquery ajax

jQuery代码:

$(document).ready(function(){
    $('.tablePend tbody').on('click','.btn',function(){
        // var id=$('#test-pend').val();
        var currow=$(this).closest("tr");
        var colId = currow.find('td:eq(3)').text();
        var id = colId;
        alert(id);
        $.post("../admin/detail.php", {
            pid:id
        });
    });
});

所以上面的代码可以正常工作,警报显示我想要的结果

<?php
include('dbh.inc.php');
include_once('header.php');

if(isset($_POST['pid'])) {
    $id = mysqli_real_escape_string($conn, $_POST['pid']);
    $sql= "SELECT event_name, event_desc, event_date, event_id FROM events WHERE event_id='$id'";
    $result= mysqli_query($conn, $sql);
    echo $id;
} else {
    echo 'nothing';
}

include_once 'footer.php';
?>

所以在这里,PHP自动转到else语句,该语句什么也不显示,我不知道出了什么问题,我已经尝试了所有可能的方式,好几天了,这确实让我感到沮丧,我也相信我犯了一个简单的错误,但我找不到它。

2 个答案:

答案 0 :(得分:0)

我认为,您应该检查$ conn。您尚未在detail.php文件中声明它。

答案 1 :(得分:0)

我必须认真研究才能得出这个答案。

您的$.post() jQuery代码不包含成功(或错误)处理程序。这意味着无论发生什么情况,您都不会看到PHP文件所说的结果。但在您的问题中,您说可以看到nothing。因此,这使我怀疑您实际上根本没有通过AJAX提交。

您已向我们展示了jQuery代码,其中在按钮上附加了事件处理程序。我的猜测是您的按钮位于<form>中。当您单击表单中的按钮时,它将提交。如果要让jQuery处理它,则必须明确指定不应进行常规表单提交。而且您的jQuery代码无法做到这一点。

这意味着当您单击按钮时,表单通常按 提交。您的事件处理程序可能会触发,并且代码会启动,但是与此同时,浏览器已移至您的<form>目标,而jQuery永不止步。您的<form>实际上并不包含id,而您是使用jQuery动态设置的。因此,您以<form>为目标,没有发布任何id,并且在页面上看到了nothing

解决方法是停止常规表单提交:

$(document).ready(function(){
    $('.tablePend tbody').on('click','.btn',function(event){
        event.preventDefault();
        // rest of your code

请注意,我已经添加了event作为传递给事件处理程序的参数,然后使用了其preventDefault()方法。 .post() documentation中显示了一个示例。