2017-07-01 129 views
0

我在客户端使用了jQuery.ajax()方法。jQuery ajax请求,PHP返回false但没有错误

在服务器端的PHP脚本return false; - 这通常引发错误功能将在客户端执行。但目前这不再发生。 成功函数被执行并且data = ""

不应该是jQuery.ajax()方法提高错误方法,如果一个PHP脚本返回false?

$.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?

+3

没有。假将被视为字符串。如果你想发送错误,然后发送状态码。 –

+1

在服务器端返回false php不会在ajax调用中触发错误函数。正常情况下,jQuery错误函数只有在加载服务器端页面时有任何困难才会触发 –

+0

错误函数在无法完成请求时触发。你应该获得你的数据成功的功能。 – krozero

回答

1
$.ajax({ 
    ... 
    error: function(jqXHR, textStatus, errorThrown) { 
     // Fail message 
    }, 
}); 

error回调函数被调用的HTTP错误,而不是在你的代码的逻辑错误。从the doc

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

这意味着如果error回调函数将得到触发:

  • 你没有连接到任何验证网络
  • 请求的页面没有找到
  • 有任何内部服务器错误
  • 你[R AJAX请求的时间太长处理
  • AJAX请求被莫名其妙地中止等

所以你的问题,

内部服务器端的PHP脚本邮件();函数被调用。如果失败,这个人是否可以将http状态码设置为500?

没有。通常,即使您的mail()函数失败,它也不会将HTTP状态代码设置为500,除非处理时间过长,否则在回调函数error中会出现超时错误。

0

试试这个

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

    } 
});