1

所以我知道它会$('#table_content').sortable('serialize')返回一个数组,因为我使用 console.info 对其进行了测试。我想要做的是将该表达式的值用作发布请求中的数据,但我希望将其结果作为回调中的数据传递给另一个 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在 的位置传递$('#table_content').sortable('serialize'),它可以工作,但我只想$('#table_content').sortable('serialize')在前一个 ajax 请求运行后的值。如果我只使用 ids,那么它的值不会反映调用后的变化$('#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 > *', ... );

不确定这一点,但您可能必须在对加载的内容调用“序列化”方法之前初始化可排序插件。

$('#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 回答