我正在尝试做一些简单的事情,但我显然错过了一些东西。我想使用json
将表单中的数据发布到Web服务中。简单吧?
我有我的HTML
<div id="addDiv">
<form id="addItemForm">
<fieldset>
<label for="title">Title</label>
<input id="title" class="txt" type="text" name="title"/></BR>
<label for="url">URL</label>
<input id="url" class="txt" type="text" name="url"/></BR>
<label for="author">Author</label>
<input id="author" class="txt" type="text" name="author"/>
</fieldset>
</form>
</div>
然后在我的js
文件中执行:
JSONdata = JSON.stringify($('#addItemForm').serialize());
console.log("Form transformed to: " + JSONdata);
有效负载输出(JSONdata):
Form transformed to: "title=tgtg&url=5rfrf&author=yhyhyyh"
我的Ajax代码以防万一:
$.ajax({
type: "POST",
url: serviceUrl,
dataType: 'json',
data: JSONdata,
contentType : 'application/json',
............
所以我看到的问题是json
字符串不是[{ "title": "tgtg", "url": "5rfrf" .... },{...}]
因此,我的服务失败
我尝试过使用REST测试仪并且该服务没有问题,问题是当我尝试通过jquery.
发布时
我也尝试使用serializeArray()
,但我得到的其他有效负载也不正确:
[{"name":"title","value":"tgtg"},{"name":"url","value":"5rfrf"},...]
换句话说,我找不到通过帖子创建正确的json
字符串的方法。
先谢谢了!
答案 0 :(得分:1)
您不想使用serialize
,而是使用serializeArray
method。如果您在对象中需要它,那么您仍然可以创建对象的name
- value
对属性:
var res = {},
arr = $('#addItemForm').serializeArray();
for (var i=0; i<arr.length; i++)
res[arr[i].name] = arr[i].value;