2013-08-15 2 views
1

Я только начал изучать json, используя jquery, и у меня возникли некоторые трудности, я провел два дня, я следил за множеством учебных пособий как на youtube, так и в блогах, но что они шоу не то, что у меня в моем случае. Их json отличается от моего. Они получили несколько ключей я только один «Новости»не может получить данные из json с jquery ajax

ответ JSON с сервера я получаю, как это:

{ 
    "news":[ 
     { 
      "id":48927, 
      "name": "The title goes right here", 
      "url": "www.example.com", 
      "date":"16 August 2013", 
      "image":"img.example.com\/image.jpg" 
     }, 
     { 
      "id": 48908, 
      "name":"The title goes right here — photography", 
      "url":"www.example.net", 
      "date":"17 August 2013", 
      "image":"img.example.net\/image2.jpg" 
     } 
    ] 
} 

на самом деле то, что я получаю от сервера больше похож на это:

{"news":[{"id":48927,"name": "The title goes right here","url": "www.example.com","date":"16 August 2013","image":"img.example.com\/image.jpg"},{"id": 48908,"name":"The title goes right here — photography","url":"www.example.net","date":"17 August 2013","image":"img.example.net\/image2.jpg"}]} 

но они оба действительный! Я уже проверил JSON LINT.

так, что я не в состоянии сделать это, чтобы получить всю информацию из JSON и добавить их в моем #posts

Я попытался как $ .getJSON & $ .ajax но я получить неопределенную в ответ

$(document).ready(function() { 

    $.ajax({ 
     url: 'http://s.example.com/myjson.php', 
     data: 'GET', 
     dataType: 'json', 

     success: function(data){ 
      $('#posts').append('name: ' + data.news.id + '<br/>'); 
     }, 
    }); 

}); 

в коде выше я попытался в Append также с данными, data.id, data.news, data.url и т.д., но все дни становится неопределенным или п Улла.

$(document).ready(function() { 

    $.getJSON("http://s.example.com/myjson.php", function(data) { 
     $.each(data, function(key, value) { 
      $("#posts").append("<li>"+data.news+"</li>"); 
     }); 
    }); 


}); 

же, как $ .ajax пробовал разные вещи в Append, но ничего.

что я хочу сделать, это иметь все идентификаторы данных, имя, URL, дату, изображение, добавленное для всех из «вещей», которые у меня есть в моем json-файле. Но, к сожалению, я застрял в начале. Это действительно расстраивает, потому что кажется таким простым, но я не могу понять, как это сделать. Пожалуйста, помогите мне!!

+1

JSONP не волшебство. Ваш сервер должен поддерживать JSONP. (если вы не находитесь в этом домене) – SLaks

+1

Что вы видите на консоли? – SLaks

+0

Воспользуйтесь инструментами hrome dev и взгляните на вкладку сети - что отправляется с сервера на ваш клиент (ваш браузер)? – surfmuggle

ответ

0

data.news массив, так что вы должны петли через него, чтобы получить все значения

$(document).ready(function() { 

    $.getJSON("http://s.example.com/myjson.php", function(data) { 
     $.each(data.news, function(key, value) { 
      $("#posts").append("<li>"+value.id+"</li>"); 
     }); 
    }); 


}); 
+0

ничего себе! благодаря! это отлично работает!это именно то, что я пытался сделать. – user2686487

+0

Это получит 'Can not read property 'length' undefined', если вы не проверите новость сначала (если ее не существует) с' if (data.hasOwnProperty ("news") $ .each (... ' –

0

В вашем JSON, news находится массив .

Вы должны получить в собственность от элемента в массиве:

data.news[42].id 

Вам нужно будет выяснить, какой элемент, чтобы получить.

1

Внутри вашей функции успеха, перебираем все элементы в пресс-массива:

for (var i=0; i < data.news.length; i++) { 
    $('#posts').append('name: ' + data.news[i].id + '<br/>'); 
} 
+0

Я бы рекомендовал проверить если есть какие-либо новости: 'data.hasOwnProperty (« news »)' до цикла или news.length будет ошибочно, когда новость не определена. –

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