У меня есть этот код:
<script>
$(document).ready(function()
{
refresh();
});
function refresh()
{
$.get('getMessageDetails.php', function (json) {
alert(json);
alert(json[0].subject);
},"json");
window.setTimeout(refresh,30000);
}
</script>
Тогда у меня есть getMessageDetails.php:
<?php
//header('Content-Type: application/json; charset=utf-8');
include('header_application.php');
$lastNewMessageCnt = $obj_clean->getUnopenedMessagesCount($_SESSION['user_id']) + 1;
$last_unopened_message_row = $obj_clean->getLastUnopenedMessage($_SESSION['user_id'],$lastNewMessageCnt);
echo json_encode($last_unopened_message_row);
?>
То у меня есть предупреждение (json), которое показывает:
[{"subject":"Freechat ddd","id":"19","created_at":"2011-08-29 14:58:27","unique_code":"ALLEYCA000RC","opened_once":"0"}]
Что правильно
Но alert(json[0].subject);
дает undefined ???
Пожалуйста помоги? благодарю вас
3 ответа
Если ваше первое предупреждение показывает то, что вы говорите, значит, содержимое вашей переменной json
не обрабатывается как json - если бы это было так, вы бы увидели [object Object]
в предупреждении. Проверьте здесь.
Поэтому вам нужно указать, что возвращается json (что вы и делаете); но вы также должны убедиться, что PHP отправляет правильные заголовки ответа. Перед отправкой вывода добавьте первую строку ниже:
header('Content-type: application/json');
echo json_encode($last_unopened_message_row);
Вам необходимо преобразовать переменную json, чтобы исправить переменную формата json.
В настоящее время это строковая переменная.
Вы должны использовать его следующим образом:
<script>
$(document).ready(function()
{
refresh();
});
function refresh()
{
$.get('getMessageDetails.php', function (json) {
alert(json); // this is a string variable.
json = $.parseJSON(json); //now json varible is in correct json format.
alert(json.subject); //you can call it dirctly like a associative array. No need to include '[0]'.
},"json");
window.setTimeout(refresh,30000);
}
</script>
Кажется, ваш JSON не анализируется правильно. Попробуйте вместо этого использовать getJSON
.
$.getJSON('getMessageDetails.php', function (json) {
alert(json);
alert(json[0].subject);
});
Похожие вопросы
Новые вопросы
jquery
jQuery - это библиотека JavaScript, рассмотрите возможность добавления тега JavaScript. jQuery - это популярная кросс-браузерная библиотека JavaScript, которая облегчает прохождение Document Object Model (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться в рассматриваемом коде, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.