Как преобразовать объект в сериализованный синтаксис для данных в функции jquery.ajax? - PullRequest
4 голосов
/ 17 января 2011

У меня есть объект, который я хочу отправить с помощью функции 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 ]

7 голосов
/ 17 января 2011

Так что я оставлю свой комментарий в качестве ответа. Если вы хотите передать массив на серверную часть, вы можете преобразовать его в 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 голос
/ 17 января 2011

Вам не нужно сериализовать, .ajax с типом 'post' отправляет атрибуты "MyObject", такие как html POST, в ваш скрипт в параметре "url".

Например, в 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'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...