如何在jquery.ajax函数中将对象转换为数据的序列化语法?

时间:2011-01-17 20:44:36

标签: jquery ajax json serialization

我有一个我想用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"
  }
]

2 个答案:

答案 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']