0

jQuerymobileWebサイトのjavascriptファイルから情報を取得しようとしています。Ajaxはデフォルトで有効になっていますが、xmlHttpRequest.send()を試してみると、responseTextはjson構造ではなくページのソースコードです。initialize()関数はpageinitで実行されるため、取得するjsonは呼び出されたときに存在する必要があると思います。また、initialize()はサイトの非モバイルバリアントで正常に機能するため、JQMがajaxリクエストを処理する方法と関係があると思います。よろしくお願いします。

<!DOCTYPE html>
<html>
    <head>
        var xmlHttpRequest;
        var json;

        <script type="text/javascript">
            function initialize()
            {
                xmlHttpRequest = (window.XMLHttpRequest) ? new XMLHttpRequest() :
                                 new ActiveXObject("Msxml2.XMLHTTP");

                if (xmlHttpRequest == null)
                return;

                xmlHttpRequest.open("GET", "pick.js", false);
                xmlHttpRequest.send();
                json = eval('('+ xmlHttpRequest.responseText +')');
            }
        </script>
        ......
    </head>

    <body>
        <div data-role="page" id="map-page"> 
            <script type="text/javascript">
                $('#map-page').live('pageinit',function(){
                    initialize();
                });
            </script>
            .....
        </div>
    </body>
</html>
4

1 に答える 1

0

jQuery Mobile(つまり、jQuery)を使用しているので、jQuery.ajaxの使用を検討する必要があります。jQuery.ajaxは、XHRオブジェクトの作成などのすべての「難しいもの」を処理します。

あなたの状況では、コードは次のようになります。

function initialize() {

   $.get("pick.js", function(data, status, jqXHR) { 
       //when the call succeeds, do something with the 'data' param
       console.log(data);
   }, "script");
}
于 2013-01-31T15:51:22.467 に答える