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