Javascript 如何从API同步获取JSON
我很清楚这一准则:Javascript 如何从API同步获取JSON,javascript,ajax,html,asynchronous,synchronous,Javascript,Ajax,Html,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 = da
$.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);
}
});
$.ajax({
网址:'http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/new_releases.json?page_limit=16&page=1&country=us&apikey=k4uaze4937mw3hf82upstxqw',
类型:'GET',
数据类型:'jsonp',
成功:功能(数据){
var movies=data.movies;
$.each(电影、函数(){
$(“#数据列表”).append(“”+this.title+”DVD日期:“+this.release#dates.DVD+”
”).listview('refresh');
//从ul获取数据
});
},
错误:函数(xhr、textStatus、errorshown){
警报(“请求失败:”+xhr);
警报('请求失败:'+文本状态);
警报('请求失败:'+错误抛出);
}
});
问题是这段代码是异步工作的。我想用
var lis = new Array();
// Iterate through the <li> items
$("#tag-cloud-list").children("li").each(function()
{
lis.push($(this).text());
});
var lis=new Array();
//遍历项
$(“#标记云列表”).children(“li”).each(函数()
{
lis.push($(this.text());
});
获取列表中的项目(以便确定数据是否已更改)。问题是列表是空的,因为在我运行此代码之前数据没有到达(因为它是异步的)
所以我需要一个同步版本的代码来从API获取JSON。基本上,我认为这段代码是我运行的第一段代码,其他所有代码都是在这段代码之后运行的。这样,当我检查值时,我就可以确定我的ul是否已填充
我在ajax调用中尝试了async:false,但它似乎没有任何作用
我想做的是:同步填充页面,然后每30秒运行一次异步代码,检查/更新同步脚本输入的值。这就是我需要两者的原因。jquery ajax调用使用jsonp不支持
async:false
,这就是为什么该选项不起作用的原因。我不认为您正在寻找一种方法来进行此同步,我认为您只需要一种方法使其能够异步工作。您是否考虑过在ajax请求完成之前添加加载微调器?如何在异步任务完成之前停止所有操作?这不是异步任务的要点吗?有同步方法吗?只有在请求成功并且数据从服务器返回后,才会调用success函数。使用异步方法总是更好的