jQuery ajax请求,PHP返回false但没有错误

时间:2017-07-01 17:06:17

标签: javascript php jquery ajax

我在客户端使用了 jQuery.ajax()方法。

在服务器端,PHP脚本 return false; - 这通常会触发在客户端执行的错误功能。但目前这种情况不再发生了。执行成功功能并执行data = ""

如果PHP脚本返回false,不应该 jQuery.ajax()方法引发错误方法吗?

$.ajax({
  url: "././mail/contact.php",
  type: "POST",
  data: {
    name: name,
    subject: subject,
    email: email,
    message: message
  },
  cache: false,
  success: function(data, textStatus, jqXHR) {
    // Success message
  },
  error: function(jqXHR, textStatus, errorThrown) {
    // Fail message
  },
});

更新:在服务器端PHP脚本中调用 mail(); 函数。如果它失败,这个是否将http状态代码设置为500?

2 个答案:

答案 0 :(得分:2)

$.ajax({
    ...
    error: function(jqXHR, textStatus, errorThrown) {
        // Fail message
    },
});
在HTTP错误上调用

error回调函数,而不是在代码中的逻辑错误上调用。来自the doc

  

错误
  键入:Function(jqXHR jqXHR,String textStatus,String errorThrown)
  请求失败时要调用的函数。该函数接收三个参数:jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象,描述发生的错误类型的字符串和可选的异常对象(如果发生)。 第二个参数(null除外)的可能值为"timeout""error""abort""parsererror"。发生HTTP错误时,errorThrown会收到HTTP状态的文本部分,例如"Not Found""Internal Server Error"

这意味着error回调函数将在以下情况下被触发:

  • 您未连接到任何经过验证的网络
  • 找不到请求的页面
  • 有任何内部服务器错误
  • 你的AJAX请求处理时间太长
  • AJAX请求以某种方式中止等。

所以你的问题,

  

在服务器端PHP脚本里面mail();函数被调用。如果它失败,这个是否将http状态代码设置为500?

没有。通常,即使您的mail()函数失败,它也不会将HTTP状态代码设置为500,除非它处理时间太长,在这种情况下,您将在{{1}中收到超时错误回调函数。

答案 1 :(得分:0)

试试这个

$.ajax({
    url: "../../mail/contact.php",
    type: "POST",
    data: {
        name: name,
        subject: subject,
        email: email,
        message: message
    },
    success: function (result) {

    }
});