Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对php脚本的AJAX post调用不起作用_Php_Jquery_Ajax_Post - Fatal编程技术网

对php脚本的AJAX post调用不起作用

对php脚本的AJAX post调用不起作用,php,jquery,ajax,post,Php,Jquery,Ajax,Post,我无法理解为什么下面的代码不起作用,我试图调用一个php脚本来发送电子邮件,但我认为我的ajax调用根本没有调用php脚本,我只是得到了一个返回的错误 我的ajax调用: var name_field = $('#cf_name').val(); $.ajax({ type: 'post', url: 'contact.php', data: {'name_field' : name_fiel

我无法理解为什么下面的代码不起作用,我试图调用一个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帖子调用它。

$field\u name不是实际字符串,它是布尔值,因为您使用了$field\u name=isset($\u post[name\u field'])。卸下isset()

您应该选中
url:contact.php
,因为您没有指定完整的url,所以您的帖子将转到相对路径。根路径将与当前脚本路径相同

看看这个:我不是js专家,但我同意你的问题是ajax调用的异步执行,因为发送电子邮件需要一段时间,也许js没有及时完成

请参见以下关于ajax调用中“async”属性的精彩解释:

        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);
            }
        });

请看以下问题/答案:


尝试ajax时会发生什么?你有没有接触过ajax产品线?你有成功功能吗?你有错误功能吗?使用devtools在网络选项卡(firebug/fox/chrome)中查看ajax请求的状态,并查看是否有帮助或将结果粘贴到你的问题中,同时尝试使用绝对URL,如果你得到404,你的URL是不对的。我肯定从ajax调用中找到了错误响应。虽然err.responseText为空。devtools网络选项卡-响应已(取消)?但是,实际上是您的ajax调用到达您的php脚本?如果服务器端(php)出现问题,您将在devtool的“网络”选项卡上的请求响应中看到一个500状态代码,如果您看到一个404,您甚至还没有到达脚本,如果您得到一个200响应,那么您就半途而废了。谢谢,这不是问题,但肯定是个问题,谢谢。啊,我在我的服务器上试用了你的代码,效果很好。我没有收到任何错误。看一看,谢谢你的帮助!