Не удается отправить многоуровневый объект javascript на сервер с помощью AJAX - PullRequest
2 голосов
/ 09 февраля 2010

У меня есть объект javascript, который выглядит примерно так:

var obj = {

    "name": "username",
    "userid": "9999",

    "object1": {
        "subObject1": {
            "subArray1": [],
            "subArray2": []
        },
        "subObject2": {
            "subArray3": [],
            "subArray4": []
        }
    },
    "object2": {
        "subObject3": {
            "subArray5": [],
            "subArray6": []
        }
    },
    "array1": [],
    "array2": []
};

Я пытался использовать вызов jQuery ajax, как это:

$.ajax({

    url: "test.php",
    type: "POST",
    dataType: "text",
    processData: false,
    data: obj,
    success: function(data, status) {

        alert("Sucsess");        
    }
});

Проблема в том, что PHP ничего не получает. Переменная $ _POST пуста. Я не уверен, что делаю не так.

Спасибо

Ответы [ 4 ]

4 голосов
/ 09 февраля 2010

Во-первых, включите JSON2.js (ссылка внизу этой страницы) на странице, затем измените свой вызов следующим образом:

$.post(
  "test.php", 
  data: JSON.stringify( obj ), 
  function(data, status) {
        alert("Sucsess");        
  });
1 голос
/ 09 февраля 2010

Попробуйте в jQuery 1.4.1 функцию $. Param полностью переписана для поддержки подобных вещей.

0 голосов
/ 09 февраля 2010

Почему бы не отправить его, используя что-то вроде библиотеки json2 для сериализации всего объекта как JSON, а затем отправить его через один параметр? Я не знаю PHP, но я был бы ошеломлен, если бы не было десятков альтернативных анализаторов JSON.

0 голосов
/ 09 февраля 2010

Я не верю, что такой объект данных можно отправить.

Если вы хотите сделать что-то подобное, вам придется сериализовать это, прежде чем отправлять данные, а затем десериализовать на сервере. У HTTP есть свои ограничения.

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