我一直在开发一个从 Dropbox 收集 csv 文件然后显示它的应用程序。由于我使用的是phonegap,我一直在使用浏览器进行开发和测试,更准确地说是Firefox。一天结束时,我将它加载到我的 HTC 平板电脑上,使用的是 android 3.2.1,但它只是没有用。这是当前使用的代码:
$.get('https://dl.dropboxusercontent.com/u/53792213/App/David.csv', function(data) {
alert('Success');
// Do stuff
})
.fail(function() { alert('error'); });
这段代码在 Firefox 和 android 4.2.2 的 android 模拟器上运行良好。但不是在真实的物理设备上。
我根本无法解决。没有给出错误,并且永远不会调用失败函数。我添加的两个警报都不会触发。
这非常令人沮丧,因为我无法访问远程调试,而且我无法在桌面上进行调试,因为它在桌面上运行良好。
我正在使用 jquery 2.0.2 和 jquery mobile 1.3.1
即使是最轻微的线索,我也会感激正在发生的事情。
编辑:为了找出错误,现在它实际上抛出了一个错误,我将我的声明修改为:
$.get('https://dl.dropboxusercontent.com/u/53792213/App/David.csv', function(data) {
alert('Success');
// Do stuff
})
.fail(function(jqXHR, textStatus, errorThrown) {
alert("An AJAX error occured: " + textStatus + "\nError: " + errorThrown);
});
然而,这是它返回的错误:
An AJAX error occured: error
Error:
空白错误信息?要么我做错了什么,要么 javascript 想要慢慢杀死我。
编辑2:
在做了一些实验后,我发现了更多奇怪的行为。如果我将 get() 函数直接添加到我的 deviceReady 函数中,因为它会在应用程序加载并准备就绪时被触发,它可以完美运行。
但是(这就是正在发生的事情)如果我在设备就绪函数中绑定一个 click jquery 事件,然后在其中调用 get 函数,它就不起作用。这里看看这个:
var App = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
//This does work
$.get('http://dl.dropboxusercontent.com/u/53792213/App/DavidColson.csv', function(data) {
alert('Success');
})
.fail(function(jqXHR, textStatus, errorThrown) {
alert("An AJAX error occured: " + textStatus + "\nError: " + errorThrown);
});
$("#Button").bind("click", function(event) {
alert("Hello");
//This does not work
$.get('http://dl.dropboxusercontent.com/u/53792213/App/DavidColson.csv', function(data) {
alert('Success');
})
.fail(function(jqXHR, textStatus, errorThrown) {
alert("An AJAX error occured: " + textStatus + "\nError: " + errorThrown);
});
});
},
};
在上述情况下,hello 警报会触发,但不会触发成功警报,而是会出现空白 ajax 错误。有任何想法吗?