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()函数注释掉,并且所有工作都正常。如果我取消注释,脚本停止工作。

+3

显示PHP脚本。这可能会打印出一个错误,这会干扰JSON。 – Barmar 2013-05-06 20:30:33

+0

此外,请检查您的服务器错误日志以查看mail()调用中的PHP错误。 – 2013-05-06 20:31:22

+0

如果您正在测试它,您是否在服务器或本地主机上运行了正在运行的邮件程序? – adeneo 2013-05-06 20:34:48

尝试:

$_SESSION['SESS_YAUCHT_ID'] = $yacht_id; 
echo json_encode($yacht_id); 

if (isset($message)) { 
    if(@mail($to, $subject, $message, $headers)){ 
      //ok 
    } else { 
      //error 
    } 
} 

事实证明,因为我是在本地测试,它没有连接到邮件服务器,一旦我 上传到一切正常的服务器。

感谢您的建议,事实证明这是愚蠢的。