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

发布于 2017-01-10 17:04:18 字数 552 浏览 1289 评论 1

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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2017-02-26 07:31:21

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;
    } 
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文