I am not sure what form you want to receive the data from the form on the server side. However, I suggest you use postData
in the following form
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); } }
In the case of the following test form
<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>
The result
variable will be
var result = { a: "1 from a", b: "2 from b", c: "3 from c", d: "4", e: "5" }
Thus, data conversion will not be performed. Then I suggest converting the result
object to a JSON string using JSON.stringify
. (Depending on the server code, it may not be needed.) Thus, the filters
parameter will be sent as
{"a":"1 from a","b":"2 from b","c":"3 from c","d":"4","e":"5"}
You can use Fiddler or Firebug to view the HTTP traffic for the corresponding small demo .
source share