jquery – 在$.getJSON中使用$.each()

这适用于使用1.0.1版的jQu​​ery Mobile应用程序.

我正在尝试从我的getmovies.php文件中获取数据,该文件输出JSON,用于jQuery函数,该函数将数据附加到HTML页面上的无序列表中.

我的HTML页面显示正确,但getMoviesList()函数不附加任何列表项,因此内容区域留空.

我的猜测是我的$.each()函数有问题.我对PHP更熟悉,但试图更熟悉jQuery和JSON,以便在jQuery Mobile应用程序中移动数据.

getmovies.php输出JSON如下:

{"items":[
{"movieID":"65086","title":"The Woman in Black","poster":"\/kArMj2qsOnpxBCpSa3RQ0XemUiX.jpg"},
{"movieID":"76726","title":"Chronicle","poster":"\/853mMoSc5d6CH8uAV9Yq0iHfjor.jpg"}
]}

我的Javascript如下:

var serviceURL = "http://mydomain.com/app3/services/";

var movies;

$('#moviesPage').bind('pageinit', function(event) {
  getMoviesList();
});

function getMoviesList() {
  $.getJSON(serviceURL + 'getmovies.php', function(data) {
    $('#moviesList li').remove();
    movies = data.items;
    $.each(movies, function(index, movie) {
      $('#moviesList').append('<li><a href="movie-details.html?movieID=' + movie.movieID + '">' +
      '<img src="posters/' + movie.poster + '"/>' +
      '<h4>' + movie.title + '</h4>' +
      '<p>Other details...</p>' +
      '</a></li>');
    });
    $('#movieList').listview('refresh');
  });
}

我的HTML看起来像这样:

<div id="moviesPage" data-role="page">

  <div data-role="content">

    <ul id="moviesList" data-role="listview" data-filter="true"></ul>

  </div><!-- /content -->

</div><!-- /page -->

我正在尝试修改以下示例应用程序以满足我的需求:http://coenraets.org/blog/2011/10/sample-application-with-jquery-mobile-and-phonegap/.

谢谢你尽你所能的帮助.

最佳答案 验证您的JSON输出是否有效:在此处验证
jsonlint.com

将绑定事件更改为此并查看它是否正常工作.

$('#moviesPage').bind('pageinit', function(event) {
    getMoviesList();
});

对此

$('#moviesPage').live('pageshow', function(event) { //or 'pagecreate'
    getMoviesList();
});

正如我所看到的,JS代码的其余部分都可以!
试试这个,看看它是否有效.据我所知,它应该!这是我在我的移动应用程序上使用的方法并且运行良好.

点赞