#php #javascript #ajax #json #jquery
#php #javascript #ajax #json #jquery
Вопрос:
Я пытаюсь закодировать систему уведомлений. Вызов AJAX запускает PHP-скрипт, который выбирает каждое «сообщение», где ‘new=1’. Итак, я возвращаю массив PHP через JSON_encode обратно в 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, показывающим свойства объекта.