1

$('#table_content').sortable('serialize')console.infoでテストしたので、配列が返されることがわかります。私がやりたいのは、その式の値をpostリクエストのデータとして使用することですが、その結果を別のajaxリクエストへのコールバックのデータとして渡す必要があります。$('#table_content').sortable('serialize').postのデータ引数として配置するだけでこれができると思いましたが、これを行うと、firebugによるとパラメータは「undefined=undefined」になります。

jQuery ->
  ids = $('#table_content').sortable('serialize')
  console.info(ids)

  $('#tasks_table').load('/dashboard #tasks_table', null, -> $.post('/tasks/sort', $('#table_content').sortable('serialize'), ->location.reload()))

undefined=undefined

なぜこれが起こっているのかについてのアイデアはありますか?idsの代わりに渡すと機能しますが、前のajaxリクエストが実行$('#table_content').sortable('serialize')された後の値のみが必要であることに注意してください。$('#table_content').sortable('serialize')IDだけを使用する場合、その値は呼び出し後の変更を反映しません$('#tasks_table').load

4

1 に答える 1

1

あなたの例から、ロード後に次の構造になってしまうようです(もちろんDIV要素ではないかもしれません):

<!-- #tasks_table you call .load() upon -->
<div id="tasks_table"> 
   <!-- #tasks_table that is loaded -->
   <div id="tasks_table">
   </div>
</div>

ページ フラグメントをロードすると、ロードされたフラグメント (ラッピング要素を含む)が一致するセット要素に挿入されますが、置き換えられないことに注意してください。

おそらく、ロードで #tasks_table の子を抽出する必要があります。

$('#tasks_table').load('/dashboard #tasks_table > *', ... );

これについてはわかりませんが、ロードされたコンテンツで「serialize」メソッドを呼び出す前に、ソート可能なプラグインを初期化する必要があるかもしれません。

$('#tasks_table').load('/dashboard #tasks_table', null, function() {
    var ids = $('#table_content')
        .sortable() // init first
        .sortable('serialize'); // then call 'serialize'
    $.post('/tasks/sort', ids, function() {
        location.reload()
    });
});
于 2012-05-12T06:46:16.960 に答える