0

jQuery serialize() 関数を使用してフォーム内のデータを収集し、次のように jQuery Ajax の「投稿」メソッドを使用してサーバーに送信していますvar params = jQuery('#mainContent form').serialize();
私が見た奇妙なことは、フォームからのシリアル化されたデータに古いデータが含まれていることです。つまり、フォームのすべての変更 (テキスト フィールドへの入力、コンボ ボックスでの選択) は DOM に保存されないため、jQuery が を呼び出すとserialize()、フォームを変更する前に表示された古いデータが収集されます。そのフォームの各要素を調べて を呼び出してみましたが.val()、まだ古い値が表示されていました。では、メソッドが入力した最新のデータで文字列を作成できるよう
に、すべての変更をフォームに保持するにはどうすればよいでしょうか? これが私のスニペットコードです。送信ハンドラー内で呼び出しましたserialize()
serialize()

jQuery('.myFormDiv input.submit').click(function() {  
    // Do something  
    // Collect data in form  
    var params = jQuery('#mainContent form').serialize();  
    // Submit to server  
    jQuery.post(url, params, successHandler);  
}

どうもありがとう。

4

1 に答える 1

2

いつシリアル化を呼び出しますか? $('form').submit( [here] ); である必要があります。フィールドに値を入力する前に、ページの読み込み時に呼び出され、その後使用されているようです。

編集:

クリックの代わりに送信イベントを使用すると、誰かがテキスト フィールドで Enter キーを押しているのをキャッチできます。

jQuery('#mainContent form').submit(function() {  
  // Collect data in form  
  var params = jQuery(this).serialize();  
  // Submit to server  
  jQuery.post(url, params, successHandler);  
}

*上記のコードは、url が define で、successHandler が関数であることを前提としています。

于 2012-07-03T03:36:08.267 に答える