#json #jquery
#json #jquery ( jquery )
Вопрос:
В другом сообщении под названием «запутался, как правильно использовать jquery getJSON» у меня возникли трудности с тем, как заставить мой вызов ajax работать, и комментарии людей помогли мне. Но мой вызов jquery ajax по-прежнему не работает:
$(document).ready(function(){
$("input#autofill").click(function()
{
$.get("last_year_ISBN.php",
function(data){
alert(data);
var isbns = $.parseJSON(data); //creates a javascript object.
var elements = $('#booklist .ISBN_number');
$.each(isbns, function(index, obj){
alert("hello");
$(elements[index]).val(obj);
});
},
"json");
});
});
Первое оповещение (данные) правильно выводит json, поэтому я знаю, что вызов ajax работает. но когда я выполнил отладку с помощью firebug, я обнаружил, что переменной isbns присвоено значение null. Кроме того, когда я поместил дополнительное оповещение («привет») внутри функции обратного вызова, оно не было вызвано и не появилось на экране. Может кто-нибудь помочь мне разобраться в этом?
Ответ №1:
Попробуйте использовать $.getJSON()
это, чтобы автоматически обработать ваш ответ как JSON.
Подробнее в $.getJSON()
Ответ №2:
Попробуйте запустить предупрежденный «json» через валидатор, например jsonlint.com . Если это недопустимый json, он не сможет создать объект.
Комментарии:
1. Json должен быть действительным, так как я использовал php-функцию json_encode для создания результата… Но я все равно скопировал json в jsonlint.com и это сработало неправильно. Кажется, что ваш сайт занимает всего до 60 строк, а это больше… Но в любом случае, знаете ли вы, почему предупреждение («привет») даже не будет вызвано
2. Более старые версии jQuery $.each не выполняют итерацию объектов, только массивов. У вас есть массив или объект?