Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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/ajax/6.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
即使请求成功,也会调用jQuery ajax错误函数_Jquery_Ajax - Fatal编程技术网

即使请求成功,也会调用jQuery ajax错误函数

即使请求成功,也会调用jQuery ajax错误函数,jquery,ajax,Jquery,Ajax,我正在制作我的wordpress网站联系人表单,希望在不刷新页面的情况下发送该表单。 我已经设法让它工作,它发送邮件,但后来我想,如果它不成功怎么办,并添加了错误功能。现在,它每次都调用error函数,即使它成功地发送了邮件。 下面是它的代码: $("#Submit").click(function () { var dataString = $('#knamecontactform').serialize(); //alert (dataString);return f

我正在制作我的wordpress网站联系人表单,希望在不刷新页面的情况下发送该表单。 我已经设法让它工作,它发送邮件,但后来我想,如果它不成功怎么办,并添加了错误功能。现在,它每次都调用error函数,即使它成功地发送了邮件。 下面是它的代码:

    $("#Submit").click(function () {
    var dataString = $('#knamecontactform').serialize();
    //alert (dataString);return false;
    $.ajax({
        type: "POST",
        url: "http://example.com/form.php",
        data: dataString,
        dataType: "text",
        error: function () {
            $('#messagenotsent').fadeIn(400);
        },
        success: function () {
            $('#knamecontactform')[0].reset();
            $('#messagesent').fadeIn(400);
        }


    });
    return false;

});
以及submitform.php:

<?php
$to = "mail@gmail.com";
$subject = "Message";
$message = 
$_POST['Nimi'] . "\n" .
$_POST['Puhelin'] . "\n" .
$_POST['Sposti'] . "\n" .
$_POST['Tiedot'];
$from = $_POST['Nimi'];
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo 'Mail sent.';
?>


<>代码> < P>除了上面提到的评论(您原来的问题是跨域Ajax)之外,您可能需要考虑使用新的(引入的VR 1.5)jQuery延迟的方式来处理AJAX事件,因为错误和成功:在JQuery的未来版本中,函数将被弃用。除了更加经得起未来考验之外,我还认为它为您的代码提供了良好的可读性

使用.done代替success,使用.fail代替error。请参见下面的示例

$.ajax({
  //all your regular ajax setup stuff except no success: or error:
 })
 .done( function (data, status) {
     //do whatever you want with the return data upon successful return
 })
 .fail( function (data, status) {
     //do whatever you want with the return data upon error
 });

有关更多信息,请查看。

尝试使用
数据类型
,同时,检查主题标题在doctype返回之前是否有前导空格:)您必须手动检测错误代码,仅依靠调用错误函数是不好的,是的,可以在较旧的jquery上调用ajaxerror函数。事实上,文档以前有一个关于它的特别说明,但现在它已经不存在了。好吧,让我们看看它实际上说的是错误,错误函数采用类似
error(jqXHR,textStatus,errorshown)
do:
console.log(jqXHR)
并将其添加到您的问题将其更改为
错误:函数(jqXHR,textStatus,errorshown){console.log(jqXHR);}
确保您在浏览器中按f12键,并让控制台选项卡显示!跨域Ajax…有你的问题,跨域Ajax CNA可以用JSONP来实现,但是TBH通常只需要在WordPress中改写,或者改写其他域的同一个域URL就更好了。下次我会考虑这个问题: