Javascript 如何为Ajax调用创建和处理响应

Javascript 如何为Ajax调用创建和处理响应,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,如何在我的PHP脚本中正确处理成功/错误结果? 我在脚本中有一个函数,它要么失败,要么成功。通常,我会返回true或false 但如果我理解正确,Ajax成功函数并不关心脚本中的结果,它只关心它是否实际运行了我的脚本。 换句话说,令人困惑的是,我必须检查success函数中的错误 那么,我应该如何处理PHP返回错误,以及如何在success函数中检查它?我应该让PHP简单地“echo”true“;“如果它成功了?” $.ajax({ type: 'POST',

如何在我的PHP脚本中正确处理成功/错误结果? 我在脚本中有一个函数,它要么失败,要么成功。通常,我会返回true或false

但如果我理解正确,Ajax成功函数并不关心脚本中的结果,它只关心它是否实际运行了我的脚本。 换句话说,令人困惑的是,我必须检查success函数中的错误

那么,我应该如何处理PHP返回错误,以及如何在success函数中检查它?我应该让PHP简单地“echo”true“;“如果它成功了?”

    $.ajax({
        type: 'POST',
        url: 'jquery-actions.php',
        data: formData,
        dataType: 'text',
        encode: true,
        error: function (response) {
            console.log(response);
        },
        success: function (response) {
            //How to find out whether or not PHP function worked?
        }

您是正确的,
$.ajax
调用的
错误处理程序只在请求的响应代码不是
200ok
时执行。如果代码执行正确,但有一个错误需要客户端处理,则可以返回一个指示响应状态的标志。假设您使用JSON,它可能如下所示:

{
    success: true,
    additionalData: 'foo bar'
}
然后,您可以在
success
处理程序中检查该标志:

$.ajax({
    type: 'POST',
    url: 'jquery-actions.php',
    data: formData,
    dataType: 'text',
    encode: true,
    error: function (response) {
        console.log(response);
    },
    success: function (response) {
        if (response.success) {
            console.log('it worked!');
        } else {
            console.log('there was a problem...');
            console.log(response.additionalData);
        }
    }
或者,您可以强制PHP返回500错误:

header("HTTP/1.1 500 Internal Server Error");
但是,您将无法使用此方法发送其他数据,这意味着错误消息必须保存在客户端代码中。

试试看

$.ajax({
    type: 'POST',
    url: 'jquery-actions.php',
    data: formData,
    dataType: 'text',
    encode: true
}) 
.always(function(jqxhr, textStatus, errorThrown) {
  // `success`
  if (typeof jqxhr === "string" 
       && textStatus !== "error"
       && jqxhr == "true") {
     console.log(jqxhr)
  } 
  // `error`
  else if (jqxhr == "false" 
           || typeof jqxhr === "object"
           || textStatus === "error") {
     console.log(jqxhr, errorThrown)
  }
})

如果返回
HTTP
status code
200
,则将触发
success
。否则,它将触发
error
函数。如果您希望在PHP中发生错误时调用ajax error函数,则可以让它以类似500(服务器错误)的错误代码进行响应。除此之外,您是对的,您必须在关于PHPs的成功功能签出页面中检查错误
http\u response\u code()
function非常感谢!现在,我让我的PHP函数执行以下操作:echo json_encode(array('success'=>true));console.log显示:{“success”:true}但是如果(response.success)没有验证为true…您需要删除
数据类型
属性,或者将其更改为
'json'
,实际上我自己刚刚发现了这一点。现在工作得很好!谢谢!