【问题标题】:Cordova iOS 10.3.1 failing ajax query without any error reportCordova iOS 10.3.1 ajax 查询失败,没有任何错误报告
【发布时间】:2017-04-17 08:29:15
【问题描述】:

在过去的几年里,我一直在 iOS 和 Android 的 Cordova 应用程序中成功使用了以下同步库 https://github.com/abeauseigle/TodoApp

突然之间,似乎与 iOS >10.3 更新有关,我开始遇到问题: 一切正常 - 波纹 - 安卓模拟器 - iOS 模拟器

真实设备 装有 iOS 10.3.1 的 iPhone 5 上,websql 部分未执行。

我倾向于认为整个 ajax 调用并不是一个整体发生的。

来电:

_sendDataToServer: function(dataToSync, uploadProgressCallBack, downloadProgressCallBack, finishCallBack) {
    var self = this;

    var XHR = new window.XMLHttpRequest(),
    data = JSON.stringify(dataToSync);
    console.log("Line 261 clientData:",data);
    XHR.overrideMimeType = 'application/json;   charset=UTF-8';

    XHR.open("POST", self.serverUrl, true);
    //XHR.timeout = 300000; //default: no timeout
    XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    XHR.onreadystatechange = function() {
        var serverAnswer="";
        if(4 === XHR.readyState) {
            try{
                serverAnswer = JSON.parse(XHR.responseText);
                console.log("Line 293 Server answered:",serverAnswer);  
            } catch(e) {
                serverAnswer = XHR.responseText;
                console.log('e.message: ',e.message); 
                console.log("Line 297 Server answered:",serverAnswer);       
            }

            self.log('Line 300 Server answered: ');
            self.log(serverAnswer);
            //I want only json/object as response
            if(XHR.status == 200 && serverAnswer instanceof Object) {
                                    console.log("websqlsync ok"); 
                finishCallBack(serverAnswer);   
            } else {
                serverAnswer = {
                    result : 'ERROR',
                    status : XHR.status,
                    message : XHR.statusText
                };
                console.log("websqlsync PROBLEM"); 
                                    finishCallBack(serverAnswer);
            }
        }
    };

    XHR.send(data);

}

在所有控制台日志中,我只看到了第一个:

Line 261 clientData:

问题仅发生在真实设备上... 有什么建议吗?

谢谢

【问题讨论】:

  • console.log("Line 261 clientData:",data); remove ',' 并在每个 console.log 中放置 + 登录?它的语法错误。
  • 感谢您的回答,但这是错误的。如果要创建字符串,请使用“+”。如果“数据”是您使用“,”的对象,那么它仍然是一个对象。
  • 但它会破坏你的日志,它不会访问逗号后的任何内容,所以你需要使用 + 号来打印你的数据对象。
  • 我可以确保它确实如此:我使用相同的代码两年 :-)
  • 我错了,你是对的!!

标签: android ios iphone ajax cordova


【解决方案1】:

经过数小时的错误尝试后,我发现设置超时可以解决问题:

XHR.timeout = 300000;

我希望这对其他人有帮助(当然会提醒我)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2018-05-28
    • 1970-01-01
    • 2017-09-18
    • 2010-12-07
    相关资源
    最近更新 更多