Разбор JSON с eval - PullRequest
       5

Разбор JSON с eval

0 голосов
/ 19 марта 2010

У меня есть этот код:

function useHttpResponse() 
{

 if (xmlhttp.readyState==4 )
 {
 var response = eval('('+xmlhttp.responseText+')');
  alert(response);
 for(i=0;i<response.Users.length;i++)
        alert(response.Users[i].UserId);

 }
}

Когда я предупреждаю, первым предупреждением является «[объект объекта]»

Почему это так? Мне нужно удалить это ... как?

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Декодирование строки JSON преобразует ее в собственный объект JavaScript. Когда вы alert() это, вызывается метод toString() объекта для приведения объекта обратно к строке. Любой объект, приведенный к строке, становится [object Object]. Рассмотрим следующий пример:

var myObj = new Object();
alert (myObj);            // alerts [object Object]
alert (myObj.toString()); // alerts [object Object]
alert (({}).toString());  // alerts [object Object]

Если вы хотите снова закодировать объект JSON, вы можете использовать метод JSON.stringify(), который есть в современных браузерах и предоставляется json2.js .

var myObj = {"myProp":"Hello"};
alert (JSON.stringify(myObj));    // alerts {"myProp":"Hello"};
0 голосов
/ 19 марта 2010

Почему это так?

Потому что это то, что вы получаете при преобразовании простого объекта в строку.

Мне нужно удалить это ... как?

Удалить alert(response); из вашего источника

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