如何从API同步获取JSON

时间:2013-09-03 03:48:22

标签: javascript ajax html5 asynchronous synchronous

我很清楚这段代码:

$.ajax({
url:'http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/new_releases.json?page_limit=16&page=1&country=us&apikey=k4uaze4937mw3hf82upstxqw',
type:'GET',
dataType:'jsonp',
success:function(data){
    var movies = data.movies;
    $.each(movies, function() {
    $('#datalist').append('<li><a><img src='+this.posters.thumbnail+' class="ui-li-thumb"><h3 class="ui-li-heading">'+this.title+'</h3><p class="ui-li-desc">DVD Date: '+this.release_dates.dvd+'</p></a></li>').listview('refresh');    
    //get data from ul

    });
},

error: function(xhr, textStatus, errorThrown){
        alert('request failed :'+xhr);
                    alert('request failed :'+textStatus);
    alert('request failed :'+errorThrown);
}
}); 

问题是此代码异步工作。我想用

var lis = new Array();

// Iterate through the <li> items
$("#tag-cloud-list").children("li").each(function()
{
    lis.push($(this).text());
});

获取列表中的项目(以便我可以确定数据是否已更改)。问题是列表是空的,因为在运行此代码之前数据没有到达(因为它是异步的)。

所以我需要一个同步版本的代码来从API获取JSON。我基本上这个代码是我运行的第一个代码,其他所有代码都在它之后运行。这样我确定在检查值时填充了我的ul。

我在ajax调用中尝试了async:false,但它似乎没有做任何事情。

我想做什么:同步填充页面,然后每30秒运行一次异步代码,以检查/更新同步脚本输入的值。这就是为什么我需要两者。

0 个答案:

没有答案