我很清楚这段代码:
$.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秒运行一次异步代码,以检查/更新同步脚本输入的值。这就是为什么我需要两者。