Как считывать возвращаемый объект в формате JSON?

#php #javascript #ajax #json #jquery

#php #javascript #ajax #json #jquery

Вопрос:

Я пытаюсь закодировать систему уведомлений. Вызов AJAX запускает PHP-скрипт, который выбирает каждое «сообщение», где ‘new=1’. Итак, я возвращаю массив PHP через JSON_encode обратно в JS.

Это возвращает следующий объект: JS объект

На моей исходной странице вы можете увидеть все «сеансы». Я хочу «обновить» текст div (который содержит новые сообщения) номерами новых сообщений (= номерами записей в объекте).

Теперь возникает проблема: я не знаю, как считывать этот объект.Кто-нибудь, пожалуйста, может мне помочь?

Большое спасибо!

Ответ №1:

Если вам нужно количество сообщений в определенном сеансе, это было бы что-то вроде этого:

 theObjectThatGotReturned[sessionName].length
// sessionName is the name of the session; in this case, "cgk" or "ur"
  

Если вам нужно количество сообщений во всех сеансах, это было бы что-то вроде этого:

 var newMessages = 0;
for(var i in theObjectThatGotReturned) {
   if ( /* here, you should test if i == a valid session name */) {
      newMessages  = theObjectThatGotReturned[i].length;
   }
}
// newMessages is the number of new messages.
  

Комментарии:

1. Мне нужно количество сообщений за конкретный сеанс, но также и за каждый сеанс. Итак, в этом примере это было бы: returnedObj[cgk]. длина и возвращаемый obj[ur].длина. Проблема в том, что я не знаю «имени» сеанса (в данном случае UR amp; CGK), поэтому мне приходится зацикливать его.

2. Я не совсем уверен, что вы имеете в виду… Если вы не знаете имени, как вы узнаете, когда найдете нужный сеанс?

3. …Теперь, если вы имеете в виду, что вы не будете знать имя заранее, но оно будет сохранено в переменной во время выполнения , тогда… Вы бы использовали мой первый фрагмент кода. Когда вы это сделаете object[sessionName] , браузер примет значение sessionName и будет использовать его в качестве имени свойства. Итак, если, например, sessionName == "ur" , то object[sessionName] == object["ur"] == object.ur .

Ответ №2:

попробуйте: json = new Function(«return ({» ajax.responseText «})»);

Комментарии:

1. Я почти уверен, что OP уже преобразовал его из строки в объект. Если я не ошибаюсь, изображение в их вопросе на самом деле является скриншотом отладчика Safari / Chrome, показывающим свойства объекта.