2

ページを更新せずにそのページを取得および更新するために、一部のページが ajax 要求を実行する必要がある web アプリケーションがあります。

Android WebViewを使用してそのwepアプリケーションをロードするときの問題。ajax を要求するすべてのページはページを更新しません。つまり、ajax 要求が機能しません。

ここに MainActivity.java のコードがあります

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview_layout);
        webView = (WebView) findViewById(R.id.webView);
        webView.clearCache(true);
        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                Log.d(LOG_TAG, message);
                new AlertDialog.Builder(view.getContext())
                        .setMessage(message).setCancelable(true).show();
                result.confirm();
                return true;
            }
        });
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                Toast.makeText(view.getContext(), "onPageStarted", Toast.LENGTH_SHORT).show();
                super.onPageStarted(view, url, favicon); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                Toast.makeText(view.getContext(), "onPageFinished", Toast.LENGTH_SHORT).show();
                super.onPageFinished(view, url); //To change body of generated methods, choose Tools | Templates.
            }
        });

        WebSettings webSettings = webView.getSettings();
        webSettings.setBuiltInZoomControls(true);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setAllowContentAccess(true);
        webSettings.setUseWideViewPort(true);
        webView.loadUrl("http://192.168.1.236:8080/mobile/android.html");
}

android.html には ajax リクエストがあります。Androidアプリケーションは正常に動作し、android.htmlをロードしますが、ajaxデータを取得しません

4

4 に答える 4

4

最後に、3 長い日の後、答えを見つけました。
問題は、このコードを持つ私が要求したページにありました:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Android WebViewと競合し、jqueryセレクターでは機能しない応答で...理由がわかりません!!!

しかし、応答から上記のコードを削除すると、ページとその ajax は正常に動作します。

PS: 私のページはすべて html ではなく xhtml です。

于 2013-04-16T21:08:24.200 に答える
1
  1. <uses-permission android:name="android.permission.INTERNET" />AppManifest.xml ファイルに含まれているかどうかを確認してください。
  2. 読み込まれたページの JavaScript が 以外のサイトにリクエストをhttp://192.168.1.236:8080送信し、そのサイトが Cross-Origin XMLHTTPRequests を許可しない場合、これらのリクエストは WebView のセキュリティ制限により失敗します。
于 2013-04-15T21:11:05.213 に答える
0

これを試して

WebView web=(WebView) findViewById(R.id.webView1);
web.getSettings().setJavaScriptEnabled(true);
于 2015-02-15T07:29:06.780 に答える