我有一个我想用jquery.ajax函数发送的对象,但我找不到任何可以将它转换为我需要的序列化格式的对象。
$.ajax({
type: 'post',
url: 'www.example.com',
data: MyObject,
success: function(data) {
$('.data').html(data)
}
})
MyObject = [
{
"UserId": "2",
"UserLevel": "5",
"FirstName": "Matthew"
},
{
"UserId": "4",
"UserLevel": "5",
"FirstName": "Craig"
}
]
Serialized_format = [
{
"name": "UserId",
"value": "5"
},
{
"name": "UserLevel",
"value": "4"
},
{
"name": "FirstName",
"value": "Craig"
}
]
答案 0 :(得分:7)
所以我会把我的评论作为答案。如果你想将数组传输到服务器端,你可以将它转换为JSON(至少这是imo最简单的方法)。
使用JSON
:
$.ajax({
type: 'post',
url: 'www.example.com',
data: {paramter: JSON.stringify(MyObject)},
success: function(data) {
$('.data').html(data)
}
});
其中parameter
是您要使用的POST参数的名称。
JSON.stringify
会给你一个字符串:
'[{"UserId":"2","UserLevel":"5","FirstName":"Matthew"},{"UserId":"4","UserLevel":"5","FirstName":"Craig"}]'
在服务器端检索,例如使用PHP和json_decode
:
$data = json_decode($_POST['parameter']);
会给你一个对象数组:
Array
(
[0] => stdClass Object
(
[UserId] => 2
[UserLevel] => 5
[FirstName] => Matthew
)
[1] => stdClass Object
(
[UserId] => 4
[UserLevel] => 5
[FirstName] => Craig
)
)
我还建议将MyObject
重命名为反映变量内容的有意义的内容。实际上,你有一个数组,而不是一个对象(是的,我知道数组也是对象)。
答案 1 :(得分:1)
你不需要序列化,带有'post'类型的.ajax将'MyObject'的属性发送到'url'参数中的html POST作为你的脚本。
例如,在PHP中: 使用:
$.ajax({
type: 'post',
dataType: 'json',
url: 'www.example.com/receive.php',
data: {
param1: 'test',
param2: 123456
},
success: function(data) {
$('.data').html(data)
}
})
在receive.php中,我有$_POST['param1']
和$_POST['param2']
。