jquery parsejson не работает

#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 не выполняют итерацию объектов, только массивов. У вас есть массив или объект?