6

ページを更新せずに送信したいワードプレス サイトのお問い合わせフォームに取り組んでいます。なんとか動作し、メールを送信しましたが、成功しなかったらどうしようと思い、エラー機能を追加しました。これで、メールを送信できたとしても、毎回エラー関数が呼び出されます。そのコードは次のとおりです。

    $("#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 に答える