私はいくつかの既存のコードに取り組んでいます。次のコードがあります。
$.ajax({
type: "get",
url: url ,
dataType: "jsonp",
cache: "false",
jsonpCallback: "onJSONPLoad",
success: function(json){
alert('hi!');
//perform operation
},
error: function() {
alert('Error occurs!');
}
});
現在、有効なパスを渡すurl
と正常に動作します。しかし、無効を渡すurl
と、エラーアラートが発生するはずです。しかし、スクリプトはエラー アラートをスローしていません。基本的に、パラメーターを検証したいurl
ですか、それとも失敗していますか? コード内のエラーを見つけるのを手伝ってください。または、別の方法で達成する方法を提案してください。次のリンクを確認しましたが、問題を解決できませんでした:
jQuery Ajax エラー処理、カスタム例外メッセージの表示
jQuery ajax エラー関数、
Ajax 成功およびエラー関数の失敗
更新: 以下のコードを追加して、jquery コンソール ログを記録しました。
@Override
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d("web chrome client", cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
次のエラーを特定しました:
XMLHttpRequest cannot load file:///android_asset/xxxx/new_source.json?callback=onJSONPLoad. Origin null is not allowed by Access-Control-Allow-Origin. -- From line 1 of null
次のコードを追加すると、アプリは正常に実行されます。
if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}
したがって、基本的にこれは、jquery が URL にアクセスできないために発生しています。
私を助けてくれてありがとう。