所以我知道$('#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
的位置传递$('#table_content').sortable('serialize')
,它可以正常工作,但只有在前一个ajax请求运行后我才想要$('#table_content').sortable('serialize')
的值。如果我只使用id,那么在调用$('#tasks_table').load
答案 0 :(得分: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 > *', ... );
不确定这个,但您可能需要初始化可排序的插件才能调用&#39;序列化&#39;加载内容的方法。
$('#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()
});
});