6

我正在处理我希望在不刷新页面的情况下发送的 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.';
?>
4

1 回答 1

5

除了上面提到的评论者(您的原始问题是跨域 AJAX)之外,您可能需要考虑使用更新的(在 1.5 版中引入)jQuery 延迟处理 AJAX 事件的方式,因为错误:和成功:函数将在jQuery 的未来版本。除了更具前瞻性之外,我还认为它为您的代码提供了一些可读性。

使用 .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 文档

于 2012-07-24T17:31:54.487 回答