2013-02-11 11 views
5

でローカルファイルを読むコードは非常に簡単です::(私は、アプリケーションのための言語の文字列をロードするためのPhoneGapでローカルファイルを読み込むしようとしていると私はそれを動作させることができない</p> <p>をPhoneGapの

var pathToLocalFile = "/home/user/android/assets/www/js/"; 
var langCache = new FileReader(); 
langCache.onload = function(data){ 
    col = JSON.parse(data); 
    refreshAllStrings(); 
}; 
langCache.onerror = function(err){ 
    debug.error(err); 
}; 
langCache.readAsText(pathToLocalFile+currentLang+'.json'); 

このコードは、リップルエミュレータ上で動作しないと私は同じ結果と、アンドロイドの場合

var pathToLocalFile = "file:///android_asset/www/js/"; 

でそれを置き換える:

Uncaught TypeError: Object #<Console> has no method 'warning' cordova-2.4.0.js:2616 
initRead cordova-2.4.0.js:2616 
FileReader.readAsText cordova-2.4.0.js:2660  
loadLanguage 

リップルエミュレータでは、google-chrome -–allow-file-access-from-filesでChromeを開始しました。Androidの設定とマニフェストにはすべての権限とプラグインが設定されています。

もちろん、私は何か不足していますが、これが何であるか考えていませんか?

よろしくお願いいたします。

+0

申し訳ありませんが、私はちょうど1つのことを明確にする必要があります。 AndroidアプリのwwwディレクトリにJSファイルを読み込もうとしていますか? –

+0

ええ、まさに、それは私が望むものです、アプリケーションパッケージにあるファイルを動的にロードする方法です(私はFileReadが動作すると思われます、私は他の提案にもオープンしています) –

+0

ええ、FileReaderはアプリケーションと共にパッケージ化されたファイル。これらのファイルを読むことは、AJAXを使って@codemonkeyの答えに従って行うのが最適です。 –

答えて

5

ファイルがアプリのwwwフォルダの下にある場合は、 '/ home/..'または 'file:///'を追加する必要はありません。アプリケーションにバンドルされていても、 "AJAX"フェッチを使用してコンテンツを読み込むことができます。

$.get('js/filename.ext'); 
+0

これはアンドロイドエミュレータでは動作しますが、リップルでは機能しませんでした(リップルで動作するようになったらすばらしいでしょう、変更を行うのが非常に遅く、アンドロイドでエミュレータをコンパイルして実行します: –

+1

クロスドメインポリシーを変更しました。リップルの作品:D –

+0

このローカルファイルに書き込むにはどうすればいいですか? –

1

実際に表示されるエラーは、cordova-2.4.0.jsが存在しない「警告」メソッドを呼び出したことによるものです。それはconsole.warnでなければなりません。 readAsTextメソッドの文字列を使用することは推奨されなくなり、代わりにFile参照を使用する必要があることを警告しようとしています。

「FileReader.readAs関数で文字列引数を使用する」は廃止されました。

関連する問題

 関連する問題