2015-05-25 3 views
3

Я пытаюсь заполнить элементы списка с помощью JSON, но он не работает. Мог бы кто-нибудь показать, где я ошибся.Заполнение элементов списка с помощью json

<ul style='list-style: none;' id='listSubjet'></ul> 
var val; 
$.ajax({   
    url: 'subjects.json' 
}).done(function(d) { 
    val = d; 
    $.each(val, function(i, su) { 
     $('<li data-action = "' + su[0] + '">' + su[1] + '</li>').appendTo('#listSubjet'); 
    }); 
}); 

JSON:

[ 
    [ "Science", "Zoology"], 
    [ "Science", "Botany"], 
    [ "Maths", "Geometry"] 
] 

EDIT:

error: function(msg){ 
    console.log('error:', msg) 
} 

enter image description here

+0

поместить ваш код в jsfiddle –

+0

Что происходит не так, вы получите сообщение об ошибке? Вы отлаживали (перешагивали) обработчик 'done'? Является ли запрос поданным с 200 OK и ожидаемыми данными? –

+0

@ try-catch-наконец спасибо. Что означает «Выполняется ли запрос с 200 OK»? – Becky

ответ

0

Проблема может быть из серв er, если ваш сервер отвечает с типом контента text/plain, то val = d; будет строкой, а не массивом. Если вы можете изменить тип контента своего ответа на application/json или проверить, является ли он строкой, а если это так, JSON.parse, эта строка преобразует ее в массив.

if(typeof d === 'string'){ 
    val = JSON.parse(d); 
} 

Кроме того, вы должны добавить к вашему AJAX: DATATYPE: «JSON», и обработать ваш ответ на success callback

Смежные вопросы