2

JQuery Form 拡張機能を使用して、AJAX でフォームを送信しています。次のコードがあります。

var options = { 
    beforeSubmit:  showRequest,  // pre-submit callback 
    success:       showResponse,  // post-submit callback 

    // other available options: 
    //url:       url         // override for form's 'action' attribute 
    //type:      'post',       // 'get' or 'post', override for form's 'method' attribute 
    //dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
    clearForm: true,        // clear all form fields after successful submit 
    //resetForm: true        // reset the form after successful submit 

    // $.ajax options can be used here too, for example: 
    timeout:   3000 
}; 


$('#composeForm').submit(function() { 
    // inside event callbacks 'this' is the DOM element so we first 
    // wrap it in a jQuery object and then invoke ajaxSubmit
 $(this).find(':disabled').removeAttr('disabled');

    $(this).ajaxSubmit(options); 

    // !!! Important !!! 
    // always return false to prevent standard browser submit and page navigation 
    return false; 
}); 

問題は、フォームが送信されていないように見えるか、少なくとも成功関数が呼び出されていないことです。return false を削除すると、送信は機能しますが、ページは移動します。これを引き起こしている可能性のあるコードに問題がありますか?

乾杯、ガズラー。

編集| 私のローカルホストで動作しているようです。ドメインがアドオンドメインであることと関係があるのでしょうか?

4

4 に答える 4

3

ここでこれを試してください:

$(document).ready(function(){
      $("#composeForm").submit(function(){
                var str = $(this).serialize(); 
                var formAction = $(this).attr("action");
                $(this).find(':disabled').attr('disabled','');

$.ajax({
         type: "POST",
         url: formAction,
         data: str,
         beforeSubmit:  showRequest,
         success: showResponse
       });

  return false;

  });

 });
于 2010-03-24T16:10:35.827 に答える
2

私の推測では、 false を削除すると、通常の送信が行われます - どちらの場合もまったく機能しません。

より多くのオプションに対して正しい値が必要だと思います。コメントアウトされているものがたくさんあります。また、フォームの送信ではなく、ボタンを使用して送信するだけの方が良い場合があります。その場合、ブラウザーが行う自動魔法をオフにすることを心配する必要はありません。

于 2010-03-24T15:19:01.897 に答える
1

独自のソリューションを追加し、

iframe オプションは次のようにする必要があります。

iframe: true

これで問題は解決しました。

ご意見をお寄せいただきありがとうございます。

于 2010-03-24T16:15:56.387 に答える
0

検証されたフォーム内のいくつかのフィールドがあり、非表示になっている可能性があるため、すべてのフィールドを確認してその検証を設定してください。jQuery hide show のために非表示になっている非表示のフィールドがあることを確認したときに機能します。または、フォームからすべての検証を削除することもできます。

于 2015-09-18T06:13:45.963 に答える