1

BrowserField 内の JavaScript から ajax リクエストを起動しようとしています。

これはデモ アプリケーションです。これは、クリック時に ajax リクエストを作成しようとする単なる html 要素です。

public MyScreen() {
    // Set the displayed title of the screen
    setTitle("MyTitle");

    BrowserFieldConfig _myBrowserFieldConfig = new BrowserFieldConfig();

    _myBrowserFieldConfig.setProperty(
            BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE);
    _myBrowserFieldConfig.setProperty(BrowserFieldConfig.ALLOW_CS_XHR,
            Boolean.TRUE);
    BrowserField browser = new BrowserField(_myBrowserFieldConfig);
    browser.displayContent(
            "<!DOCTYPE html><html><head>"
                    + "<script>function loadXMLDoc(){"
                        + "alert('t'); "
                        + "var xmlhttp;"
                        + "if (window.XMLHttpRequest) "
                        +"{ "
                            + "xmlhttp = new XMLHttpRequest();  "
                        + "} "
                        + "else { "
                            + "xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");  "
                        + "}"
                        + " xmlhttp.onreadystatechange=function()  "
                        +"{ "
                            + " if (xmlhttp.readyState==4 && xmlhttp.status==200) "
                            + "{"
//                                  + " document.getElementById(\"myDiv\").innerHTML=xmlhttp.responseText;"
                            + "}"
                            +"alert('State:'+xmlhttp.readyState+ 'status'+ xmlhttp.status)"
                        + "} "
                        + "xmlhttp.open(\"GET\",\"http://www.w3schools.com/ajax/demo_get.asp\",true);"
                        + "xmlhttp.send(); "
                        + "}"
                    + "</script>"
                    + "</head><body><h2>AJAX</h2><a onclick=\"javascript:loadXMLDoc();\">Request data</a><div id=\"myDiv\"></div></body></html>",
            "http://www.w3schools.com");
    add(browser);
}

問題は、最初のアラートでさえ機能していないことです。そのため、javascript 構文エラーが発生するはずですが、まあ、すべて問題ないように見えます。コンピューターの Firefox からこのコードを試してみたところ、アラートが表示されました (クロスドメインが常に可能であるとは限りません)。それで、私のスクリプトのエラーは何ですか?

BB 5.0.0 および 7.0.0 のシミュレーターでこれをテストしました。

4

2 に答える 2

0

間違っているのは、絶対 URL を使用して XMLHttpRequest を開くことです。相対 URL (例: demo_get.asp) を使用する必要があり、ブラウザフィールドには baseurl を正しく設定する必要があります ( http://www.w3schools.com/ajax/ )。

それはとても不便です。

于 2013-06-13T12:06:54.483 に答える