ajax 跨域获取数据的时候能同步执行吗

哈哈军团 2014-10-21 09:13:38
通过test方法调用GetData,并获取GetData从服务器上得到的数据(跨域)。
test方法要获取数据,必须把ajax设置为同步执行,但ajax在跨域的同时,好像没法设置同步。
大家有什么好的办法没?
function GetData(url, postData)
{
var result= false;
$.ajax({
url: url,
data: postData,
type: "post",
async: false,
dataType:"jsonp",
jsonp: "callback",
success: function (data)
{
resule=data;
},
});
return result;
}
function test(getData)
{
alert(getData.Yhid);//此处显示undefined
}
...全文
305 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aabwf 2015-08-15
  • 打赏
  • 举报
回复
在ajax的success里面触发一个你自己定义的函数,在你自己定义的函数里再把数据复制到一个全局变量中,需要同步执行的代码你可以设置一个setTimeout,来延迟你要执行的代码,我就是这样解决的
哈哈军团 2014-10-21
  • 打赏
  • 举报
回复
这样的话 就需要调用GetData的时候就需要写两个function 一个是调用GetData把回调函数的名称传过去 另一个是回调函数 funciton test() { GetData(url,data,"SetData") } function SetData(data) { ...... }
slwsss 2014-10-21
  • 打赏
  • 举报
回复
引用 4 楼 u014029067 的回复:
不行啊,因为跨域的时候ajax是异步执行,GetData无法返回数据
类似这样的 function GetData(url,args,callback){ajax(url,args,function(a){callback(a)})}
哈哈军团 2014-10-21
  • 打赏
  • 举报
回复
不行啊,因为跨域的时候ajax是异步执行,GetData无法返回数据
slwsss 2014-10-21
  • 打赏
  • 举报
回复
引用 2 楼 u014029067 的回复:
因为用不止一次的使用ajax,想着把ajax获取数据的方法封装一下 然后需要数据的时候只需要调用GetData方法,把url和参数传过去 再返回需要的数据
那个方法上加个回调参数用来接收返回值不就行了
哈哈军团 2014-10-21
  • 打赏
  • 举报
回复
因为用不止一次的使用ajax,想着把ajax获取数据的方法封装一下 然后需要数据的时候只需要调用GetData方法,把url和参数传过去 再返回需要的数据
slwsss 2014-10-21
  • 打赏
  • 举报
回复
后续操作放回调里执行,为什么要同步

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧