Как получить данные Json в мобильном приложении Jquery
Я делаю основное приложение "Новости" в dreamviewer с jQuery Mobile.
Я сделал весь дизайн, но теперь пришло время получить данные Json с моего сервера api в мое приложение.
вот моя ссылка на сервер api ; f.е. "http:/mywebapiurl"
Я думаю, что мне нужно написать функцию Jquery о getJson, но я не знаю, как это сделать ?
Как я помещу его в свой listview с небольшим изображением статьи, articletitle и articleheadline ?
вот пример моего listview, который я собираюсь показать новости, поступающие от Json.
<body>
<div data-role="page" id="home">
<div data-role="header">
<h1>Post Mobile</h1>
</div>
<div data-role="content">
<ul data-role="listview" data-inset="true">
<li><a href="#headline">
<img src=ArticlePicture" class="ui-li-has-thumb"/>
<h3>ArticleTitle</h3>
<p>ArticleHeadline</p>
</a></li>
</ul>
</div>
<div data-role="footer" data-position="fixed">
<h4>© funky app </h4>
</div>
вот пример кода, который я пробовал;
<script>
$(document).ready(function() {
$.getJSON("http://mywebapiurl", function(data) {
var result= "";
$.each(data.LatestNews, function(index, value) {
result+= "<ul><li><a href='#'><h3>"+value.TITLE+"</h3><p>"+value.SPOT+"</p></a></li></ul>";
});
$("#articleContainer").html(result);
})
});
</script>
ждем вашего ответа.
большое спасибо.
2 ответов
рабочий пример jsFiddle:http://jsfiddle.net/Gajotres/8uac7/
$(document).on('pagebeforeshow', '#home', function(e, data){
$.ajax({url: "http://api.themoviedb.org/2.1/Movie.search/en/json/23afca60ebf72f8d88cdcae2c4f31866/The Goonies",
dataType: "jsonp",
async: true,
success: function (result) {
ajax.parseJSONP(result);
},
error: function (request,error) {
alert('Network error has occurred please try again!');
}
});
});
var ajax = {
parseJSONP:function(result){
$.each( result, function(i, row) {
$('#movie-data').append('<li><a href="#headline"><img src="http://www.incine.fr/media/photos_films/original/1285_4bc92529017a3c57fe00ee84_1293130970.jpg" class="ui-li-has-thumb"/><h3>' + row.original_name+ '</h3><p>' + row.overview+ '</p></a></li>');
});
$('#movie-data').listview('refresh');
}
}
в вашем случае, просто измените тип данных:"jsonp" to тип данных:"json".
EDIT:
document ready
не следует использовать с jQuery Mobile
. Обычно он запускается до загрузки страницы в DOM
.
это можно исправить с помощью соответствующее событие jQuery Mobile page, например:
$(document).on('pagebeforeshow', '#home', function(){
});
больше информации о событиях страницы и как они работают можно найти в этом статьи, чтобы быть прозрачным, это мой личный блог. Или найти его здесь.
$.помощью метода getjson против $.ajax
предпочитаю $.ajax
потому что он лучше работает с jQuery Mobile, особенно, если вам нужно show/hide
ajax загрузчик страниц или сделать междоменный вызов, как в моем примере. Но все вместе это одно и то же.
что вы пробовали? JQuery довольно прямолинейно по теме json, schema:
$(function() {
$.getJSON('/api', function(data) {
var $foo = $('#foo');
for(vari=0; i<data.length; i++) {
$foo.append('<div>'+data[i][title]+'</div>');
}
});
});