AJAX:如何发回 success/error 消息

AJAX: How to send back a success/error message

这是我 Ajax 迈出的第一步,我已经在努力了。我有一个插入数据库的请求,但目前我的代码表现得就像所有请求都成功一样,但我希望能够在更新数据库时处理错误。我想根据 MYSQL 响应向 alert() 发送一条 success/error 消息。

我的 Ajax 电话:

$("a.bgbtb").click(function(){
  var btnid = $(this).attr("id").split('newbudbtn-')[1]; 
  var newbudget = $("INPUT[id=newbud-"+btnid+"]").val(); 
  var platform = $("span#"+btnid).text(); 
  $.ajax({
    url:"campbdgtedit.php", 
    method:"POST",  
    data:{platform:platform, btnid:btnid, newbudget:newbudget},  
    success:function(data){
        myAlertTop();
    }
  });
});

campbdgtedit.php:

$query = "INSERT INTO campaigns (camp_budget, camp_campaignid) VALUES ('".$_POST['newbudget']."', '".$_POST['btnid']."')";

if ($conn->query($query) === TRUE) {
    echo "Success<br/>";
} else {
    echo "Error: " . $query . "<br>" . $conn->error;
}

如果查询中有错误,我如何捕捉并相应地处理我的警报?我已经尝试了很多我在这里找到的解决方案,但我似乎无法让它们发挥作用。

如果我没理解错,你需要从JS端的php端分析"echo",才能提示相应的错误。

使用此处返回的"data":

 success:function(data){
        myAlertTop();
    }

并执行以下操作:

 success:function(data){
        myAlertTop(data);
    }

function myAlertTop(replyfromPHPside)
 {
  if (replyfromPHPside =="abc")
   {
    alert('..');
   }
  else
   {
    ...
   }
 }

我认为最好的方法是从 PHP 中回显一个 json-string 并且 "catch" 在 javascript 中的响应是这样的:

campbdgtedit.php:

$query = "INSERT INTO campaigns (camp_budget, camp_campaignid) VALUES ('".$_POST['newbudget']."', '".$_POST['btnid']."')";

$arr = array();
if ($conn->query($query) === TRUE) {
    $arr['response'] = true;
} else {
    $arr['response'] = false;
}
echo json_encode($arr);

Javascript:

$("a.bgbtb").click(function(){
  var btnid = $(this).attr("id").split('newbudbtn-')[1]; 
  var newbudget = $("INPUT[id=newbud-"+btnid+"]").val(); 
  var platform = $("span#"+btnid).text(); 
  $.ajax({
    url:"campbdgtedit.php", 
    method:"POST",  
    data:{platform:platform, btnid:btnid, newbudget:newbudget},  
    success:function(data){
        if (data.response == 'true') {
            alert('DB success');
        }
        else {
            alert('DB fail');
        }
    }
  });
});

我建议从您的 PHP 代码返回 JSON,如果您在 [=] 上使用 dataType: 'json',这可以直接解释为 JavaScript 中的一个对象21=] 呼叫。例如:

if ($conn->query($query) === TRUE) {
    echo json_encode(array('success' => true));
} else {
    echo json_encode(array('success' => false, 
                           'message' => "Error: Insert query failed"
                           )
                     );
}

请注意,通常将查询详细信息和连接错误传回给最终用户是不安全的,最好传回一条通用消息并将实际错误记录到文件或其他位置。

在你的 JavaScript:

$("a.bgbtb").click(function(){
  var btnid = $(this).attr("id").split('newbudbtn-')[1]; 
  var newbudget = $("INPUT[id=newbud-"+btnid+"]").val(); 
  var platform = $("span#"+btnid).text(); 
  $.ajax({
    url:"campbdgtedit.php", 
    method:"POST",  
    data:{platform:platform, btnid:btnid, newbudget:newbudget},  
    dataType: 'json',
    success:function(data){
        if (data.success) {
            // all good!
            myAlertTop();
        }
        else {
            // problems
            alert(data.message);
        }
    }
  });
});