我继续看到使用JQuery Ajax通过HTTP请求发送JSON数据的两种不同方法,但我无法理解哪个是最正确的,哪些可能有一些缺点。
它们是否相同? 哪一种最正确,缺点较少?
第一种方法(隐式序列化)
$.ajax({
url: 'test.php',
type : "POST",
dataType : 'json',
data : JavaScriptObject,
success : function(result) {
...
},
error: function() {
...
}
})
要发送到服务器的数据。它被转换为查询字符串if 还不是字符串...对象必须是键/值对
在这种情况下,在我看来,如果我有一个像
这样的Javascript对象var a = {
name: 'a',
age: 10
}
我之前不需要序列化它,因为JQuery会为我提供类似check=check2&radio=radio1
的输出字符串。
可能我可以json_encode
服务器端的查询字符串再次获得JSON数据。
SECOND APPROACH(serialize(); JSON.stringify(); serializeArray())
1.serialize()
$.ajax({
url: 'test.php',
type : "POST",
dataType : 'json',
data : $("#form").serialize(),
success : function(result) {
...
},
error: function() {
...
}
})
.serialize()方法使用标准的URL编码表示法创建文本字符串。
在这种情况下,我了解serialize()
创建一个查询字符串,如check=check2&radio=radio1
。
可能我可以json_encode
服务器端的查询字符串再次获得JSON数据。
所以我要说在这种情况下serialize()
就像第一种方法中的隐式序列化一样。
2。 JSON.stringify(),serializeArray()
$.ajax({
url: 'test.php',
type : "POST",
dataType : 'json',
data : JSON.stringify($("#form").serializeArray()),
success : function(result) {
...
},
error: function() {
...
}
})
.serializeArray()方法创建一个JavaScript对象数组, 准备好编码为JSON字符串。
像这样(表格中的2和1个文字)
[
{
name: "a",
value: "1"
},
{
name: "b",
value: "2"
}
]
stringify函数返回一个表示JSON格式的String ECMAScript值... value参数是ECMAScript值,它是 通常是一个对象或数组...
生成像这样的输出字符串
'[{"name": "a","value": "1"},{"name": "b",value: "2"}]'
我可以再次编码为JSON数据。
由于