Если вы поместите свой HTML-код в тег <form>
, вы можете легко использовать функцию $.serializeArray()
в jQuery.
http://api.jquery.com/serializeArray/
$.serializeArray()
создает литерал объекта JavaScript в виде:
[ {name: a, value:1}, {name: b, value: 2}, ...]
Это сделано, я считаю, потому что ваша форма может иметь несколько полей с одним и тем же именем. Ассоциативный массив не поддерживает это.
Я бы рекомендовал отправлять данные на сервер в формате JSON (используя serializeArray
или другим способом), а не в виде простой строки. JSON более стандартизирован и может обрабатывать экранирующие символы. Если вы используете строки, разделенные каналом, вам необходимо учитывать, когда пользователь хочет отправить канал (|
) на сервер. Затем вы попадаете в ситуации, когда между значениями появляются сумасшедшие разделители, например ||**
. (Я видел это - это безобразно!). Палка с JSON.
Если вы предпочитаете более похожий на строку запроса формат (например, a = 1 & b = 2 & c = 3), который вы можете включить в тело запроса, вы можете использовать $.serialize()
.
http://api.jquery.com/serialize/