【问题标题】:AJAX JQuery GET gives success but doesnt update the tableAJAX JQuery GET 成功但不更新表
【发布时间】:2018-09-03 05:09:35
【问题描述】:

当用户点击收件箱中的通知时,我正在尝试更新已读。我在互联网上看到使用 AJAX 和 jquery 应该很容易,但我遇到了一个奇怪的问题。在我单击 AJAX 响应成功后,但是当我查看我的数据库时它没有更新。然后我尝试手动完成并在链接中为其提供了正确的值。之后我得到了响应成功,并且数据库也成功更新了。所以问题一定是AJAX,但我不知道我做错了什么。

读取.msg.php

include("db-conct.php");

$AID = $_GET['aid'];
$msgID = $_GET['msgid'];

$update = "UPDATE notify SET readed = 1 WHERE acc_ID = $AID AND ID = $msgID";

if ($conn->query($update) == TRUE) {
echo "Succes!";
}else{
echo "Error: " . $conn->error;
}
?>

AJAX 脚本:

$(document).on("click","#notify-item",function(){

    var aid = "<?php echo $aid; ?>";
    var msgid = "<?php echo $notifID; ?>";

    $.ajax({

        type:"POST", //GET - update query should be POST
        url: "read.msg.php",  //your php end point
        data: 'aid=' + aid + '&msgid=' + msgid, 
        success: function(data){ //if success
            alert("Record successfully updated");
        }

    })
});

希望有人能看到问题。

添加图片:

【问题讨论】:

    标签: jquery mysql ajax get


    【解决方案1】:
    $(document).on("click","#notify-item",function(){
    
    var aid = "<?php echo $aid; ?>";
    var msgid = "<?php echo $notifID; ?>";
    
    $.ajax({
    
        type:"POST", //GET - update query should be POST
        url: "read.msg.php",  //your php end point
        data: {'aid':aid ,'msgid':msgid}, // this is the data format
        success: function(data){ //if success
            alert("Record successfully updated");
        }
    
    })
    

    });

    【讨论】:

    • 它仍然无法正常工作。我现在看到它是一个错误,但是当我手动操作时,它一切正常。真的很奇怪
    • 手工操作是什么意思?
    • 当我使用链接中的值访问链接时,例如 read.msg.php?aid=26&msgid=30 i
    • 然后它可以工作,但是当我在 ajax 中执行它时会出错
    【解决方案2】:

    实际上,您并没有检查脚本的响应是什么,而只是发出警报(“记录成功更新”);

    你应该这样做:

    $.ajax({
        type:"POST",
        url: "read.msg.php",  
        data: {aid:aid ,msgid:msgid},
        success: function(data){
                    if(data=="success"){
                    alert("Record successfully updated");
                    }
                    else{
                    alert("Some Error");
                    }
                } 
    
    });
    

    php 脚本:

    <?php
    include("db-conct.php");
    @extract($_POST);
    $aid = $_POST['aid'];
    $msgid = $_POST['msgid'];
    
    $update = "UPDATE notify SET readed = 1 WHERE acc_ID = '$aid' AND ID = $'msgid'";
    
    if ($conn->query($update) == TRUE) {
    echo "success";
    }else{
    echo "Error: " . $conn->error;
    }
    ?>
    

    【讨论】:

    • 所以我试过了,现在我确实得到了一些错误响应,但看起来 ajax 没有权限或其他东西。因为当我手动操作时,数据库会更新,否则不会。
    • 试试这个数据格式:data: {aid:aid,msgid:msgid}
    • 我试过你的数据格式,但仍然得到错误响应。真的很奇怪。好像ajax没有权限。当我手动完成时,一切都很好@Rahul
    • 我去看看
    • 现在响应成功,但表格没有更新。真的很奇怪
    【解决方案3】:

    问题很可能出在您的 php 处理代码中。

    在更新数据库之前,您必须确保数据不为空。

    在 POST 值上使用 isset 包装您的代码,并尝试回显它以进行测试。

    如果它为空,则表示您的 javascript 在发布之前提供数据存在问题。

    <?php
    if (isset($_POST['aid']) && isset($_POST['msgid'])) {
    
      //echo $_POST['aid'].' / '.$_POST['msgid'];
    
      include("db-conct.php");
    
      $aid = $_POST['aid'];
      $msgid = $_POST['msgid'];
    
      $update = "UPDATE notify SET readed = 1 WHERE acc_ID = '$aid' AND ID = $'msgid'";
    
      if ($conn->query($update) == TRUE) {
    
        echo "success";
    
      }else{
    
        echo "Error: " . $conn->error;
    
      }
    }
    ?>
    

    编码愉快!

    【讨论】:

      猜你喜欢
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      相关资源
      最近更新 更多