0

jQuery のフォーム プラグインを使用して、フォームを非同期的に送信しています。サーバーは ajaxForm 呼び出しのターゲットを設定することにより、div #boardcontainer に入る HTML を送り返します。これはうまくいきます。

...
    var options = { 
      target:        '#boardcontainer',    // target element(s) to be updated with server response 
      beforeSubmit:  showRequest,  // pre-submit callback 
      success:       showResponse  // post-submit callback 
      };
    $('#myForm').ajaxForm(options); 
...

問題は、サーバーから返される HTML に 2 つの div が含まれていることです。

<div id="board">
...
</div>
<div id="status">
...
</div>

「#board」は、サーバーによって事前レンダリングされる巨大な HTML テーブルです。「#status」は短いメッセージであり、理想的には #boardcontainer 以外の div に入る必要があります。

この状況を処理する最善の方法は何ですか? jqueryはdivの親を変更できますか? もしそうなら、送信後のコールバックで親を変更できますが、それを行う方法が見つからないようです。

4

2 に答える 2

3

成功のコールバックでは、appendTo を使用して div を再配置できます。または、json を返し、成功のコールバックで div を構築することもできます。

 $('#status').appendTo('#realTarget');

編集: チェックすると、appendTo 自体は、イベント ハンドラーを失うことなく、必要なことを行います。

于 2009-02-21T13:04:38.260 に答える
0

私はjsonでdivを構築することになりました(ただし、divのhtmlは文字列として埋め込まれています)

コードは次のとおりです。

$(document).ready(function () {
    var options = {
        beforeSubmit: showRequest,  // pre-submit callback 
        success: showResponse,  // post-submit callback 
        dataType: 'json'
    };
    $('#myForm').ajaxForm(options);
});

function showResponse(data) {
    $('#statusTarget').html(data.status);
    $('#boardcontainer').html(data.board);
};

これは機能し、フォームが送信されるたびに #statusTarget と #boardTarget の両方が新しい html に置き換えられます。

于 2009-02-21T17:32:36.413 に答える