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

标签 jquery ajax

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

    $("#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.';
?>

最佳答案

除了上面提到的评论者(您最初的问题是跨域 AJAX)之外,您可能还需要考虑使用较新的(在版本 1.5 中引入)jQuery 延迟方式来处理 AJAX 事件,因为 error: 和 success: 函数将在 jQuery 的 future 版本中将被弃用。除了更加面向 future 之外,我还认为它为您的代码提供了很好的可读性。

使用 .done 代替成功,使用 .fail 代替错误。请参阅下面的示例。

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

有关更多信息,请查看jQuery docs on deferred objects .

关于即使请求成功,也会调用 jQuery ajax 错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11557762/

相关文章:

javascript - 这段代码有什么问题? :/

javascript - 多次使用相同 jQuery 函数的问题

javascript - 通过JQuery改变背景图片

php - Symfony2 使用 json 进行 ajax 请求

javascript - 将参数以及二进制文件数据传递给 Web api Controller ?

php - 使用 PHP 从数据库中预填充 token 输入文本框中的值

javascript - 使用 jQuery、Javascript、PHP 获取特定零件类

javascript - 使用 jquery 选择 div 不起作用

php - 将 HTML5 Canvas 数据保存到服务器

java - 当其余服务返回字符串时,jquery ajax 调用返回错误