Можно ли сделать так, чтобы сортируемые jQuery сериализованные элементы были доступны при обычной отправке без ajax? - PullRequest
3 голосов
/ 26 февраля 2012

В настоящее время я использую 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"]

Можно ли сделать эту информацию доступной посредством обычной отправки?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 26 февраля 2012

Вы можете заполнить скрытый ввод сериализованными данными при отправке.В этом вам не нужно возвращать false в вашем обработчике событий, потому что вы не хотите останавливать событие отправки.

Добавьте в форму:

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

Bind a onотправить событие:

$("#create_items_form").on('submit', function() {
    $('someid').val($("#destination_items").sortable('serialize'));
}); 
0 голосов
/ 05 марта 2012

Я полагаю, что предыдущий пост ответил на вашу проблему, но теперь, когда вы занимаетесь сериализацией массивов и т. Д., Помогут следующие плагины.

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

http://amplifyjs.com/

...