Вопрос по jquery – В чем разница между .serialize () и .serializeArray ()?

25

Я экспериментирую с отправкой формы контроллеру. Документация JQuery говорит, что.serializeArray() должен отправить массив json, а .serialize () должен создать строку запроса.

Однако, когда я пытаюсь это сделать и проверять в IE9 F12-mode, в обоих случаях это выглядит как строка запроса. Который когда-либо звоню, я делаю ...

Что мне не хватает?

Я действительно видел это прежде, чем отправить этот вопрос. Я до сих пор не понимаю! kaze
Можете ли вы дать результат, который вы видите в консоли отладки? Julien
посмотрите на [ЭТО] [1] [1]:stackoverflow.com/questions/4235052/… Sebastian Breit

Ваш Ответ

1   ответ
37

serializeArray создает массив (not «массив json»; - нет такой вещи); Вы можете проверить это самостоятельноconsole.log($("#myform").serializeArray()), С другой стороны,serialize создает строку запроса, которая должна быть частью запроса HTTP. Оба представления эквивалентны в том смысле, что с помощью соответствующего кода вы можете преобразовать одно в другое без какой-либо двусмысленности.

Причиной доступности обеих версий является то, чтоserialize удобнее, когда вы просто хотите сделать HTTP-запрос (просто поместите результат в строку запроса), аserializeArray удобнее, если вы хотите обработать результаты самостоятельно.

Методы jQuery AJAX не заботятся о том, что вы дадите им один или другой, потому что они определяют тип параметра и преобразуют его в строку запроса, если это не так, поэтому к моменту, когда запрос сделан внешними наблюдателями не могу сказать, какой был исходный формат параметров.

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededserializeArrayError: User Rate Limit Exceededwhy both appear to do the same thingError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded kaze
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded kaze

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