大地
大地
  • 发布:2015-11-19 13:30
  • 更新:2017-12-27 09:32
  • 阅读:3877

mui ajax 在安卓4.4上设置同步调用async = false不起作用

分类:MUI

我在使用mui ajax---getJson的时候发现安卓4.2,4.3 上设置 async = false后,回调函数success调用是同步的,但小米2 安卓4.4的环境就发现调用比较奇怪,一会儿同步,一会儿不同步。本想着写个通用的ajax函数,现在不得不为每个业务函数写单独的success函数,中间我也考虑ajax函数执行后延迟执行下句,不过没什么作用,不知道大家有没有碰到类似的问题,有没有什么好的解决办法?

var success = function(response) {
if (dataType === 'json') {
response = JSON.stringify(response);
} else if (dataType === 'xml') {
response = new XMLSerializer().serializeToString(response).replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
ajaxResponse = (response || '[]');
console.log('ajax suc return' + ajaxResponse);
};

$.ajaxSettings.async = false;

owner.ajax = function(data, url) {
ajaxResponse = '';
if (type === 'get') {
if (dataType === 'json') {
$.getJSON(url, data, success);
} else {
$.get(url, data, success, dataType);
}
} else if (type === 'post') {
$.post(url, data, success, dataType);
}
while(ajaxResponse)
{
console.log('ajaxResponse is null');
if(!ajaxResponse)
{
break;
}
}
};

2015-11-19 13:30 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com

问题解决了么,我也遇到这个问题了

1***@qq.com

1***@qq.com

这个问题我遇到了,我是这样解决的,传入一个函数,以callback回调

pileState: function(url, cpid,callback) {
var mask = mui.createMask();
url = url + "scanCharge/isChargePile";
window.res = 0;
mui.ajax(url, {
data: {
deviceId: cpid
},
dataType: "JSON",
type: "GET",
crossDomain: true,
crossDomain: true,
async: false, // 使用同步操作
beforeSend: function() {
plus.nativeUI.showWaiting("加载中...", {});
mask.show();//显示遮罩层
},
complete: function() {
plus.nativeUI.closeWaiting();
mask.close();//关闭遮罩层
callback(window.res);
},
success: function(data) {
window.res = data;
},
error:function(xhr){
window.res = false;
}
});
}

1***@qq.com

1***@qq.com

在调用这个方法的时候,

Pile.pileState(url,cpid,function(data){

//在这里拿到返回的参数
//处理业务逻辑

});

该问题目前已经被锁定, 无法添加新回复