2***@qq.com
2***@qq.com
  • 发布:2019-10-19 09:12
  • 更新:2019-10-22 14:09
  • 阅读:1216

【报Bug】ios ajax 不能同步,同样的代码 andorid 没事

分类:HBuilderX

如题:
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 不存在这种问题。

2019-10-19 09:12 负责人:无 分享
已邀请:
4***@qq.com

4***@qq.com

我也遇到了和你一样的问题,请问,这个问题后续有解决吗?

  • 2***@qq.com (作者)

    我也是没招儿了,最后用的 jq ajax ,没问题

    2019-11-02 20:57

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