jquery1.9 jsonp如何实现跨域同步


   
  var ajaxResult = false;
  
$.ajax({
async:false,//非跨域下有效
url:WEB_URL+$(obj).attr('ajax'),
type:'POST',
dataType:'jsonp',
data:{param:$(obj).val()},
jsonp:JSONP_CALLBACK,
success:function(data){
ajaxResult = (data.status != 'error' && data.status != 0) ? true : false;
alert('aaaaaaa'+ajaxResult);
},
error:function(){return 'fail';}
})
//alert(ajaxResult);
return ajaxResult;

以上是代码,我的jsonp是跨域的,现在已经从服务器端取得了结果,但要命是不同步,怎么解决这个问题啊?
我的ajaxResult必须要服务器端返回过来的数据,求懂的人帮帮忙啊,十分急啊

jquery JavaScript

油泼辣子酸汤面 10 years, 5 months ago

jquery里jsonp没法做同步的. 我觉得这里有两个选择:

1). 把你的处理逻辑写入ajax的success()回调函数中;

2). 外部设置标志位, ajax的sucess()设置标志位. 外部代码setTimeout轮询标志位.

不知道还有没有更好的方法.

@jquery ajax回调函数返回值如何赋值给其他变量

方法二示例, 仅供参考. 需要说明的是, js里无法真正实现sleep, 所以基本无法作出同步的效果来:

   
  var flag=false;
  
var ajaxResult='';

var i=setInterval(
function(){
if(flag){
console.log(ajaxResult);
clearInterval(i);}
else console.log('not yet!')
},
1000);

$.ajax(
{
url:"www.xxx.org",
success: function(){
ajaxResult="got it!";
flag=true;
}
});

真的是路过 answered 10 years, 5 months ago

Your Answer