ドロップボックスからcsvファイルを収集して表示するアプリに取り組んでいます。私はphonegapを使用しているので、ブラウザー、より正確にはFirefoxで開発およびテストしてきました。一日の終わりに、Android 3.2.1 を搭載した HTC タブレットにロードしましたが、機能しませんでした。現在使用されているコードは次のとおりです。
$.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 エミュレーターで問題なく動作します。ただし、実際の物理デバイスではありません。
私は単にそれを解決することはできません。エラーは発生せず、fail 関数は呼び出されません。私が追加した両方のアラートは発生しません。
リモート デバッグにアクセスできないため、非常にイライラします。また、デスクトップでは正常に動作するため、デスクトップでデバッグすることもできません。
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 関数に直接追加すると、アプリが読み込まれて準備が整ったときに起動されるため、完全に機能します。
しかし(そしてこれが起こっていることです)デバイスの準備完了関数でクリック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 アラートは発生しますが、success アラートは発生せず、代わりに空の ajax エラーが発生します。何か案は?