【问题标题】:passing result from jquery .sortable('serialize') in a post request在发布请求中传递来自 jquery .sortable('serialize') 的结果
【发布时间】:2012-05-12 15:05:25
【问题描述】:

所以我知道$('#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'),它可以工作,但我只想在前一个ajax 请求运行后获得$('#table_content').sortable('serialize') 的值。如果我只是使用ids,那么它的值并不能反映调用$('#tasks_table').load后的变化

【问题讨论】:

    标签: jquery jquery-ui coffeescript


    【解决方案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()
        });
    });
    

    【讨论】:

    • 非常感谢!我只需要在回调函数中初始化我的 ids 变量。这很有意义。现在它工作得很好,除了 location.reload() 函数重新加载页面并且在执行发布请求后更改的新数据不显示。相反,我必须手动重新加载页面,然后才会反映更改。这对我来说似乎有点奇怪,因为我认为发布请求的回调函数只有在发布请求成功发出后才会执行。关于这个有什么想法吗?
    • 它是一个成功回调,所以它在成功时被调用。您确定发布的数据吗?你确定你在服务器端做什么?另外,如果你之后重新加载整个页面,为什么还要使用 ajax?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2017-08-31
    • 2023-03-16
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多