Я не уверен, в какой форме вы хотите получить данные из формы на стороне сервера. Тем не менее, я бы предложил вам использовать postData
в следующей форме
postData: {
filter: function () {
var result = {}, i, item,
formInfo = $('form#myForm').serializeArray(),
l = formInfo.length;
for (i = 0; i < l; i++) {
item = formInfo[i];
result[item.name] = item.value;
}
return JSON.stringify(result);
}
}
В случае следующей формы теста
<form id="myForm">
<div><input type="text" name="a" value="1 from a" id="a" /></div>
<div><input type="text" name="b" value="2 from b" id="b" /></div>
<div><input type="hidden" name="c" value="3 from c" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" id="f" />
</div>
</form>
Переменная result
будет
var result = {
a: "1 from a",
b: "2 from b",
c: "3 from c",
d: "4",
e: "5"
}
Таким образом, преобразование данных не будет выполнено. Затем я предлагаю преобразовать объект result
в строку JSON, используя JSON.stringify
. (Зависит от кода сервера, он может быть не нужен.) Поэтому параметр filters
будет отправлен как
{"a":"1 from a","b":"2 from b","c":"3 from c","d":"4","e":"5"}
Вы можете использовать Fiddler или Firebug для проверки HTTP-трафика соответствующего небольшого демо .