mail()阻止JSON响应
问题描述:
我正在使用以下jQuery代码将表单数据发送到PHP处理脚本,该脚本要么在数据库中输入新列表或更新现有列表。mail()阻止JSON响应
该网站列出发布船只及游艇。它的工作很好,但现在客户希望在新船上市时收到电子邮件通知。我将代码添加到了PHP处理脚本中,但是如果由于某种原因使用mail()
,它会阻止成功函数在下面的jQuery代码中工作。
mail()
函数是唯一影响它的函数。如果我评论这条线,它再次运作。
发生了什么的任何想法?
$.ajax({
type: "POST",
url: "scripts/listing_form_json_exec.php",
dataType: 'json',
data: JSON.stringify(dataString),
success: function(data) {
var yacht_id = (data);
$('#manage_images_link').attr('href', 'manage_images.php?yacht_id=' + yacht_id);
$('input[name=yacht_id]').val(yacht_id);
$('img.saved').show();
$('img.saved').fadeOut(3000);
$('div#button_frame').show();
$('#errors_container').html('');
}
});
编辑
PHP脚本很长,但这里是有问题的部分
$_SESSION['SESS_YAUCHT_ID'] = $yacht_id;
echo json_encode($yacht_id);
if (isset($message)) {
//mail($to, $subject, $message, $headers);
}
我试图把mail()
功能在不同的地方,但无论在哪里我把它同样的事情发生。以上我已将mail()
函数注释掉,并且所有工作都正常。如果我取消注释,脚本停止工作。
答
尝试:
$_SESSION['SESS_YAUCHT_ID'] = $yacht_id;
echo json_encode($yacht_id);
if (isset($message)) {
if(@mail($to, $subject, $message, $headers)){
//ok
} else {
//error
}
}
答
事实证明,因为我是在本地测试,它没有连接到邮件服务器,一旦我 上传到一切正常的服务器。
感谢您的建议,事实证明这是愚蠢的。
显示PHP脚本。这可能会打印出一个错误,这会干扰JSON。 – Barmar 2013-05-06 20:30:33
此外,请检查您的服务器错误日志以查看mail()调用中的PHP错误。 – 2013-05-06 20:31:22
如果您正在测试它,您是否在服务器或本地主机上运行了正在运行的邮件程序? – adeneo 2013-05-06 20:34:48