【发布时间】: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