【问题标题】:Is it possible to make the jQuery sortable serialized items available on a normal non-ajax submit?是否可以使 jQuery 可排序序列化项目在正常的非 ajax 提交上可用?
【发布时间】:2012-03-15 21:50:49
【问题描述】:

目前我正在使用 ajax 提交我的可排序项目,但我想做一个非 ajax 提交。这可能吗?

当前的 ajax 帖子:

$("#create_items_form").submit(function() {
    $.ajax({
      type: "POST",
      url: $(this).attr("action"),
      dataType: "script",
      data:  $("#destination_items").sortable('serialize')
    });
    return false;
});

html:

<%= form_for(@items, :url => create_items_path, :html => {:id => "create_items_form"}) do |f| %>
    <ul id="destination_items"></ul>
<%= f.submit "Save", :id => "create_items_button" %>

因此,我得到了一个很好的数组,可以在我的控制器中使用:

Params: "items"=>["8", "10"]

是否可以通过正常提交提供此信息?

谢谢!

【问题讨论】:

    标签: jquery ruby-on-rails ajax jquery-ui jquery-ui-sortable


    【解决方案1】:

    您可以在提交时使用序列化数据填充隐藏输入。在这种情况下,您不需要在事件处理程序中返回 false,因为您不想停止提交事件。

    添加到您的表单中:

    <input id="someid" name="yourfieldname" type="hidden">
    

    绑定一个提交事件:

    $("#create_items_form").on('submit', function() {
        $('someid').val($("#destination_items").sortable('serialize'));
    }); 
    

    【讨论】:

    • 我试过了,但它传递的是字符串而不是数组对象。是否可以在 html 隐藏输入标签中传递数组?
    • @EverTheLearner:您可以使用以下方法将该字符串解析为哈希:stackoverflow.com/questions/2772778/…
    • @DCoder:谢谢!这有助于解析字符串!
    • 这是一个旁注,但您不应该使用提交事件将数据放置在隐藏字段中,而是使用 jquery 的 sortable 来检测排序顺序的更改并填充隐藏字段改变。这样您就不会冒险在隐藏字段获取数据之前发生从提交。
    【解决方案2】:

    我相信之前的帖子已经回答了您的问题,但是现在您正在研究序列化数组等,下面的插件会有所帮助。

    http://www.onegeek.com.au/projects/javascript-serialization

    http://amplifyjs.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-27
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 2011-12-05
      相关资源
      最近更新 更多