
function Ajax(page){
var dataAjax = new Object();
$.ajax({
type:"post",
url:"http://www.mocky.io/v2/58c9fb1f0f0000f4206b8b59",
async:false,//false
dataType:"jsonp",
data:page,
success:function(data){
dataAjax = data.rechargeDetail;
console.log(dataAjax);//能打印出来数据
}
});
console.log(dataAjax)//打印出来是空
return dataAjax;
}
var dataList = Ajax(1);
console.log(dataList)//打印出来是空
为什么会出现这种状况,数据是同步跨域请求,我在本地上模拟的json数据都能取得到,但是这边就取不到,我怀疑是请求数据时间太久了,query强行让ajax异步了?你们觉得呢
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
题主,JSONP是不能使用async:false同步ajax的。
ajax是ajax,JSONP是JSONP。
根据
jquery文档:http://api.jquery.com/jquery....jsonp是不支持同步的代码由上往下执行。走到ajax的时候进入异步,继续往下走到console.log(dataAjax) 如果此时你ajax请求还没取到数据还没给dataAjax赋值的话 这时候输出必然为空
正确做法应该是 return dataAjax 写在 成功回调里面
jsonp实质上不是ajax,没有同步一说,实在想解耦,用promise形式