gpt4 book ai didi

php - jQuery.post 没有收到来自 php 脚本的错误

转载 作者:行者123 更新时间:2023-12-02 18:43:50 26 4
gpt4 key购买 nike

我知道以前有人问过这个问题,并且我已经查看了我能找到的所有涉及此问题的帖子。我仍然无法让 jQuery.post 函数正确接收来自 php 脚本的错误。两者都在这里。
PHP:

<?php 
##CONFIGURATION
# LIST EMAIL ADDRESS
$toemail = "email here";

# SUBJECT (Subscribe/Remove)
$subject = "Someone has contacted International Designs";

# RESULT PAGE
$location = "../thank-you.php";

## FORM VALUES ##
$myname = $_REQUEST['myname'];
$myemail = $_REQUEST['myemail'];
$mymessage = $_REQUEST['mymessage'];

if ( empty($myname) || empty($myemail) || empty($mymessage) ) {

exit('{"error":"That value was invalid!"}')

} else {

# SENDER
$email = $myname . " <" . $myemail . ">";

# MAIL BODY
$body .= "Name: " . $myname . " \n\n";
$body .= "Email: " . $myemail . " \n\n";
$body .= "Message: " . $mymessage . " \n\n";
# add more fields here if required

## SEND MESSGAE ##

mail( $toemail, $subject, $body, "From: $email" ) or die ("Mail could not be sent.");

}

?>

JS:

if (verify(myname, myemail, mymessage, human, hash, patt)) {
$.post(myform.attr('action'), myform.serialize(), function() {
$('#email-success').fadeIn();
myform[0].reset();
setTimeout("$('#email-success').fadeOut();", 5000);
}, 'json')
.fail(function() {
alert('An error has occurred. Please try again later.')
});
}

我已经尝试了大约 5 种不同的方法,但没有一个有效。当我将“json”作为 .post 函数中的数据类型时,无论 php 脚本中的内容如何,​​.fail 总是会触发。如果我省略数据类型,则 .fail 在任何情况下都不会触发。我感觉问题出在 php 命令和数据类型上。如有任何帮助,我们将不胜感激。

最佳答案

可能是因为您没有更改响应的 http header 代码,也没有指定响应的数据类型。

在任何情况下,您的 php 代码对前端 (jQuery) 代码的响应都具有“200 – OK”状态,但您预计在某些情况下会出现错误,并带有“HTTP/1.0 400 – Bad Request”响应或“HTTP/1.0 500 内部服务器错误'。

并且,就像茄子一样,您必须将响应数据类型指定为“Content-Type: application/json”。

所以,最终的代码将是这样的:

<?php 
...

header('HTTP/1.0 204 – No Content', true, 204);
header('Content-Type: application/json');

if ( empty($myname) || empty($myemail) || empty($mymessage) ) {

header('HTTP/1.0 400 – Bad Request', true, 400);
exit('{"error":"That value was invalid!"}')

} else {

...

$send = mail( $toemail, $subject, $body, "From: $email" );
if (!$send)
header('HTTP/1.0 500 – Internal Server Error', true, 500);
exit ('{"error":"Mail could not be sent."}');
}
}
return;
?>

对于警告无法修改 header 信息 - 已发送的 header (输出从/homepages/.../design/contact.php:1 开始) 您可以检查 this answer同样的问题。

输出可以是:

  • 无意:
    • 前面有空格
    • UTF-8 字节顺序标记
    • 之前的错误消息或通知
  • 有意:
    • print、echo 和其他产生输出的函数(如 var_dump)
    • 之前的原始区域

聊天 session 后更新:这是一个 UTF-8 BOM 问题

关于php - jQuery.post 没有收到来自 php 脚本的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16604215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com