如题:
ios ajax 不能同步,同样的代码 andorid 没事
还报 Script error.filename:lineno:0 这种错误,android 没事
ajax 用的是 mui 的
console.log(11)
mui.ajax('https://...', {
async: false,
data: {
...
},
dataType: 'json',
type: 'GET',
crossDomian: true,//开不开都一样
success: function(resData) {
console.log(22)
console.log(resData)
}
})
console.log(33)
结果是
11
33
22
[object] [object]
上面代码是在 mui.plusReady 里面执行的。
翻了一下 mui.js 源码发现:
$.plusReady(function() {
$.ajaxSettings = $.extend($.ajaxSettings, {
xhr: function(settings) {
console.log('####')
//强制使用plus跨域
if (settings.crossDomain) {
console.log('aaa')
return new plus.net.XMLHttpRequest();
}
//仅在webview的url为远程文件,且ajax请求的资源不同源下使用plus.net.XMLHttpRequest
if (originAnchor.protocol !== 'file:') {
var urlAnchor = document.createElement('a');
urlAnchor.href = settings.url;
urlAnchor.href = urlAnchor.href;
settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host);
if (settings.crossDomain) {
console.log('bbb')
return new plus.net.XMLHttpRequest();
}
}
console.log('ccc')
if ($.os.ios && window.webkit && window.webkit.messageHandlers) { //wkwebview下同样使用5+ xhr
return new plus.net.XMLHttpRequest();
}
return new window.XMLHttpRequest();
}
});
});
if ($.os.ios && window.webkit && window.webkit.messageHandlers)
而 plus.net.XMLHttpRequest 不支持同步............,设置 async 没用。
但是我的应用就要用同步咋整,现在要都改成异步可麻烦了,要动的地方忒多.......
我的苹果测试机 ios 版本是 12.4.1,android 不存在这种问题。
2***@qq.com (作者)
我也是没招儿了,最后用的 jq ajax ,没问题
2019-11-02 20:57