【发布时间】:2014-03-08 12:56:17
【问题描述】:
我不明白为什么以下不起作用,我正在尝试调用 php 脚本来发送电子邮件,但我认为我的 ajax 调用根本没有调用 php 脚本,我只是得到一个错误返回。
我的 ajax 调用:
var name_field = $('#cf_name').val();
$.ajax({
type: 'post',
url: 'contact.php',
data: {'name_field' : name_field },
dataType: 'json',
success: function(data) {
if(data.status == 'success')
alert("Thank you for subscribing!");
else if(data.status == 'error')
alert("Error on query!");
},
error: function(err) {
alert(err.responseText);
}
});
我的 php 脚本:
$field_name = isset($_POST['name_field']);
$field_email = 'name@email.com';
$field_phone = '12345';
$field_message = 'Hello World!';
$mail_to = 'emailaddress@email.com';
$subject = 'Message from a website visitor '.$field_name;
$body_message = 'This message has been sent via website:'."\n\n";
$body_message .= 'From: '.$field_name."\n\n";
$body_message .= 'E-mail: '.$field_email."\n\n";
$body_message .= 'Phone Number: '.$field_phone."\n\n";
$body_message .= 'Message: '.$field_message;
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
if ($mail_status) {
$response_array['status'] = 'success';
}
else {
$response_array['status'] = 'error';
}
header('Content-type: application/json');
echo json_encode($response_array);
如果我直接导航到 url,php 会按预期工作,但我无法让 ajax 帖子调用它。
【问题讨论】:
-
当您尝试使用 ajax 时会发生什么?你真的到了 ajax 行吗?你到达成功功能了吗?你得到错误函数了吗?
-
使用 devtools 在网络选项卡 (firebug/fox/chrome) 中查看 ajax 请求的状态,看看是否有帮助或将结果粘贴到您的问题中,也尝试使用绝对 URL,如果您收到 404,则您的网址不正确。
-
我肯定遇到了来自 ajax 调用的错误响应。虽然 err.responseText 是空的。
-
devtools 网络选项卡 - 响应已(取消)??
-
但是,实际上是您的 ajax 调用到达了您的 php 脚本?如果服务器端(php)出现问题,您将在 devtool 的网络选项卡中的请求响应中看到 500 状态代码,如果您看到 404,您甚至没有到达您的脚本,如果您得到200 响应,那么你就成功了。