我一直在开发一个应用程序,它从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错误。有什么想法吗?
答案 0 :(得分:0)
为什么同时使用jQuery和jQuery mobile?看起来你应该只能使用移动设备,并且两个库的使用可能是冲突导致问题的原因。
您可以尝试添加对jQuery.noConflict()的来电来解决此问题:
<script type="text/javascript">
// This takes out the jQuery variable '$' from the global scope
$.noConflict();
jQuery(document).ready(function($) {
jQuery.get('https://dl.dropboxusercontent.com/u/53792213/App/David.csv',function(data)
{
alert('Success');
}).fail(function() { alert('error'); });
});
//rest of your normal jQuery that uses the $. here
</script>
编辑:看起来还是jQuery mobile isn't compatible with jQuery 2。尝试引用jQuery 1.9.1,看看是否有效。