Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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从未完成?_Php_Jquery_Ajax - Fatal编程技术网

Php 为什么我的Ajax从未完成?

Php 为什么我的Ajax从未完成?,php,jquery,ajax,Php,Jquery,Ajax,我想用PHP发送邮件,但是数据是在Jquery中,所以我使用Ajax 邮件已发送,但我收到了警报(“失败”),我不知道为什么^^ jqXHR.responseText为空且textStatus=“error” 我的表格中的所有数据如下所示: // Récupération de TOUS les élements DES formulaires var lesChamps = $(".frm_etape input[type='text'], .frm_etape input[checked],

我想用PHP发送邮件,但是数据是在Jquery中,所以我使用Ajax

邮件已发送,但我收到了警报(“失败”),我不知道为什么^^ jqXHR.responseText为空且textStatus=“error”

我的表格中的所有数据如下所示:

// Récupération de TOUS les élements DES formulaires
var lesChamps = $(".frm_etape input[type='text'], .frm_etape input[checked], .frm_etape input[type='checkbox'], .frm_etape select, .frm_etape textarea");

// Message qui contiendra les données que l'on passera au script PHP
var message = "";

// On empêche les submit de s'afficher dans le mail
$(lesChamps).attr("type", "submit").replaceWith("\n\n");

// Parcours des champs des formulaires
$(lesChamps).each(function(){
    message += $(this).attr("name") + " : " + $(this).val() + "\n\n";
});

        /* Requête Ajax */
         $.ajax({
                  method: "POST",
                  url: "traitement.php",
                  data: { message }
         })

            /* Si succès */
            .done(function() {
                $(".succes").animate().css("display", "block");
                alert("Ok");
                // On attends 3,5 secondes puis on rafraichi la page
                //setTimeout(function(){location.reload();}, 3500);
            })

            /* Si échec */
            .fail(function(jqXHR, textStatus, errorThrown) {
              alert(jqXHR.responseText);
              alert("FAIL");
            });
这是traitement.php:

mail("r.v@a.com", 'Nouveau devis', $_POST['message']);
邮件已正确发送,但始终具有警报(“失败”)!而responseText是一个空字符串

编辑:在我写的fail()中:

console.log(errorThrown.stack);
这是结果:{readyState:0,getResponseHeader:function,getAllResponseHeaders:function,setRequestHeader:function,OverrideMetype:function,…}


我找到了解决办法!只需添加一个e.preventDefault();在我的代码之前

textStatus
的值是多少?@ridick关于请求,您的控制台怎么说?因为什么而失败?正在向端点发送哪些数据?端点是否正确且未被阻止?alert(textStatus)=error如果查看失败处理程序中的
errorThrown
变量,以及浏览器开发工具的“网络”选项卡,并且向我们展示了PHP的一部分,可能会有所帮助。我无法使用控制台,因为警报刚发出,页面就被重新加载了^^^textStatus的值是多少?@ridtick您的控制台对请求说了什么?因为什么而失败?正在向端点发送哪些数据?端点是否正确且未被阻止?alert(textStatus)=error如果查看失败处理程序中的
errorThrown
变量,以及浏览器开发工具的“网络”选项卡,并且向我们展示了PHP的一部分,可能会有所帮助。我无法使用控制台,因为在发出警报后,页面会重新加载^^