Как отправить, сериализируют данные формы с помощью JQuery, если входной элемент является массивом

Вы можете иметь основные tsconfig.json в корневом каталоге проекта и отдельные tsconfig.json файлы в каталоге пакетов со следующим содержимым:

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "outDir": "dist",
  },
  "include": ["src"]
}
14
задан abatishchev 27 June 2010 в 12:05
поделиться

9 ответов

Вы, возможно, должны изменить свой PHP, как @Tomalak предполагает, но необходимо будет также изменить JavaScript. Для ссылки на именованный элемент используют #name селектор:

var selectedbooks = $('form#book_form').serialize();;
0
ответ дан 1 December 2019 в 07:20
поделиться

легкий: serialize().replace(/%5B%5D/g, '[]')

22
ответ дан 1 December 2019 в 07:20
поделиться

Спасибо Tomalak.

В файле PHP я использую следующий код теперь:

while ($row = mysqli_fetch_assoc($result)) {
    extract($row);
    echo "<tr>";
        echo "<td bgcolor='#FFFFFF'><input id='$book_id' name='bookArray[]' type='checkbox' value='$book_id' />$book_id</td>";
        echo "<td bgcolor='#FFFFFF'>$book_name</td>";
    echo "</tr>";
} // while

** book_id уникален.

Используя tvanfosson решение, теперь я могу получить массив входного значения

var selectedBooks = $ ('form#book_form') .serialize (); предупреждение (selectedBooks);

От аварийного окна сообщения я добираюсь ==> bookArray%5B%5D=T2.05&bookArray%5B%5D=T2.81

Теперь, когда я отправил сериализировать входное значение в файл PHP с помощью JQuery

var selectedBooks   = $('form#book_form').serialize();
alert (selectedBooks);

var url = 'saveBookList.php';

// Send to server using JQuery
$.post(url, {bookArray: selectedBooks}, function(responseData) {
    $("#save-result").text(responseData);
});

Внутри saveBookList.php для обработки сериализировать формы я получил эту ошибку "Недействительный аргумент, предоставленный для foreach ()".

Внутри saveBookList.php,

// If you have selected from list box.
if(isset($_POST['bookArray'])) {

    // Get array or bookID selected by user
    $selectedBookId = $_POST['bookArray'];
    echo $selectedBookId;

    foreach($selectedBookId as $selectListItem) {
        echo "You sent this -->" . $selectListItem . "\n";
    }
}

Код PHP выше хорошо работает, если я отправляю Прототип использования.

Для Прототипа, когда я действительно повторяю $selectedBookId;

Я получил Массив.

Для JQuery, когда я действительно повторяю $selectedBookId;

Я добрался ==> bookArray%5B%5D=T4.11&bookArray%5B%5D=T4.38

Мой вопрос, jQuery поддерживает значение массива для метода сообщения?

0
ответ дан 1 December 2019 в 07:20
поделиться

Проблема решена! Вот то, что я сделал.

В файле PHP для создания строк динамических флажков,

  while ($row = mysqli_fetch_assoc($result))
  {
   extract($row);
   echo "<tr>";
   echo "<td bgcolor='#FFFFFF'><input name='books' type='checkbox' value='$book_id' />$book_id</td>";
   echo "<td bgcolor='#FFFFFF'>$book_name</td>";
   echo "</tr>";
  } // while

Я не использую $ JQuery .post метод больше. Я изменил свой код на следующее

    var my_query_str = '';

$("input[@type='checkbox'][@name='books']").each(
  function()
  {
    if(this.checked)
    {
           my_query_str += "&bookArray[]=" + this.value;
    }
  });


$.ajax(
{
    type: "POST",
    url: "saveBookList.php",
    data: "dummy_data=a" + my_query_str,
    success:
        function(responseData)
        {
            $("#save-result").empty().append(responseData);
        },
    error:
        function()
        {
            $("#save-result").append("An error occured during processing");
        }
});

Теперь, внутри saveBookList.php страница, значением $ _POST ['bookArray'] является Массив. Yey! Yey!

Я действительно надеюсь и желаю, чтобы $ .post метод JQuery мог поддерживать тип данных массива, как Прототип делает.:)

0
ответ дан 1 December 2019 в 07:20
поделиться

Функциональность Prototype / Scriptaculous сериализации для jQuery:

<script>
function toObjectMap( queryString )
{
    return '{\'' + queryString.replace(/=/g, '\':\'').replace(/&/g, '\',\'') + '\'}';
}
</script>
...
<div id="result"></div>
...
<form onSubmit="$('#result').load( ajaxURL, toObjectMap( $('#formId').serialize() ) );" ...>
...
1
ответ дан 1 December 2019 в 07:20
поделиться

@Tomalak В XHTML можно использовать символы квадратных скобок «[» и «]». видеть http://www.w3.org/TR/xhtml1/dtds.html#dtdentry_xhtml1-transitional.dtd_input

Таким образом, это означает, что имя может содержать много разных символов в пределах XHTML, хотя это не делает имеет смысл использовать слеши или скобки. PHP поддерживает использование нотации массива в именах форм, поэтому вы можете упустить трюк, если не используете нотацию массива в некоторых случаях.

1
ответ дан 1 December 2019 в 07:20
поделиться
var data = $(form).serialize();
$.post('post.php', '&'+data);
0
ответ дан 1 December 2019 в 07:20
поделиться
var arTags = new Array();

jQuery.map( $("input[name='tags[]']") , function(obj,index)
{
   arTags .push($(obj).val());
});

var obj = {'new_tags'           : $("#interest").val() ,
           'allready_tags[]'  : arTags };

var post_data = jQuery.param(obj,true);

$.ajax({
      type :  'POST',
      url  :  'some_url',
      data :  post_data,
      dataType : "html",
      success: function(htmlResponse)
      {

      }
});
2
ответ дан 1 December 2019 в 07:20
поделиться

jQuery 1.4

var myform = $("book_form").serialize();

decodeURIComponent(myform);
1
ответ дан 1 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: