AJAX: Как я могу вернуть объект в jquery? - PullRequest
0 голосов
/ 27 декабря 2010

Мне интересно, могу ли я вернуть объект из json_encode() в JQuery. Если бы я сделал что-то подобное ...

$.ajax({
   type : 'POST',
   url  : 'next.php',
   dataType : 'json',
   data     : { nextID : 2 },
   success  : function ( data ) {

            // do something with data.myObject.memberVariable

          },
      error    : function ( XMLHttpRequest, textStatus, errorThrown) {

           //  didn't work!

      }
});     

И это (next.php)

<?php

include_once('myClass.php');

$myObj = getMyObject( $_POST['nextID'] );  // get an object

$return['myObject'] = $myObj;

echo json_encode($return);

?>

Теперь я проверил этот метод, но всякий раз, когда я пытаюсь сделать data.myObject.memberVariable, все, что я получаю, это [object Object]. Как я могу получить доступ к переменным объекта? Надеюсь, приведенный выше код поможет объяснить мой вопрос: (

Ответы [ 5 ]

4 голосов
/ 27 декабря 2010

Как насчет этого?

 echo json_encode($return['myObject']);

А вы вернули заголовок json?

1 голос
/ 11 июня 2012

Попробуйте это в своей функции успеха JQuery:

alert(data.ObjectProperty);

Вы можете получить доступ к свойствам объекта, используя точку (.).

1 голос
/ 27 декабря 2010

Несколько указателей / вопросов:

  1. Вы должны сделать print_r($myObj), чтобы убедиться, что ваш объект действителен и имеет действительные элементы данных.memberVariable сам объект, как указал SLaks, и поэтому вы получаете [object Object].
  2. echo out $return после того, как вы запустите на нем json_encode() и проверьте, отвечает ли JSON-ответдопустимо, и то, что переменные-члены, которые вы ищете, является правильным. JSONLint может отформатировать ваш JSON для удобства чтения.
  3. Как работает функция getMyObject()?Когда вы повторяете $myObj->m_url, это что-нибудь возвращает?
  4. Наконец, вы можете установить Firebug , если вы используете Firefox, или Inspector, если вы используете браузер Webkit, ииспользуйте console.log(object) вместо alert(object).Это даст вам более глубокий взгляд на ваш объект, а не [object Object].
1 голос
/ 27 декабря 2010

Может быть, проанализировать $ myObj на json_encode

1 голос
/ 27 декабря 2010

Ваш memberVariable содержит объект.
Чтобы увидеть необработанные данные, посмотрите на свойства объектов:

alert(data.myObject.memberVariable.someProperty);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...