1

iOS/AndroidアプリのWin8への移植について質問があります。私は現在、http: //srobbin.github.com/jquery-pageslide/ pageslideの修正バージョンを使用しており、ajax呼び出しを使用して側面にmenu.htmlページをロードしています。AJAX呼び出しは次のようになります...

    $.ajax({
    url: $str,
    dataType: "text", 
    success: function(data) {         
        $("#menu").html(data);

    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
      }
});

Win8では、このエラーが発生します。

    Exception was thrown at line 8490, column 29 in ms-appx://664ace5f-4774-4928-bc94-ad4650a1ede1/js/jquery-1.8.2.js
0x80070005 - JavaScript runtime error: Access is denied.

これは、jQueryコードで壊れているところです。

    if (s.username) {
                        xhr.open(s.type, s.url, s.async, s.username, s.password);
                    } else {
                        xhr.open(s.type, s.url, s.async); //<-------------------
                    }

私はいくつかの調査を行いましたが、Windows8はローカルのajax呼び出しを許可しないようです。これをWinJS.xhr呼び出しまたはWin8で機能するものに変換するにはどうすればよいですか?

編集-最初の答えの後。

私が探しているのは、$ str(メニューのhtmlを含むファイルのURL、つまりmenu.html)に移動し、html呼び出しを介して$('#menu')にデータを入力することです。menu.htmlからテキストを取得するためにXHRリターンに何を入力し、成功呼び出しでそれをファイルに割り当てることができます。

初めてXHR/AJAXをいじったので、無知を許してください。

編集#2

次のコードのように、WinJS.xhr...を使用するためのjquery呼び出しをやり直しました。

    WinJS.xhr({
        type: "GET",
        url: $str,
        responseType: "text",

    }).then(function(success){
        console.log(success);
    },
    function (error) {
        console.log(error);    
    }
    );

これでも、アクセスが拒否された例外が返されます。このベースJavaコードについて。

req.open(
                    options.type || "GET",
                    options.url,
                    // Promise based XHR does not support sync.
                    //
                    true,
                    options.user,
                    options.password
                );

例外はここに記載されています。

SCRIPT5: Exception is about to be caught by JavaScript library code at line 2332, column 21 in ms-appx://microsoft.winjs.1.0/js/base.js
0x80070005 - JavaScript runtime error: Access is denied.

ファイル名/パス($ str)が間違ったパスに変更された場合、resource_not_foundエラーが発生します。これは自明です。今何をしようかわからない。誰かが解決策を持っていますか?

4

2 に答える 2

1

ヒットしているURLは「ローカル」だとおっしゃいました。それはマシン上の別のサービスですか、それとも同じプロジェクト内の別のファイルですか?前者の場合、実際には開発中も機能するはずですが、本番環境では許可されません。認定プロセスでは、アプリがローカルホストにリクエストを送信することはできません。後者だと思います。その場合、間違いなくxhrでリクエストできるはずです。Fragments and Pagesデモで私のcodeSHOWプロジェクト(リンク)を見てください。WinJS.xhrデモも参照してください。

編集-答えも含めたいだけです。(素晴らしいアプリ!!)

これは、jqueryの$.ajax呼び出しに置き換わるものです。

        WinJS.xhr({
        url: '/menu.html',
        responseType: "document",

    }).then(function(xhr){

        var temp = xhr.response.childNodes[0].innerHTML;
        $('#menu').html(temp);
    }

    );
于 2013-01-11T11:43:50.813 に答える
0

xhrコールバックを使用して、独自のxhrを返します。http://api.jquery.com/jquery.ajax/

$.ajax({
    url: $str,
    xhr: function(){
        return yourDesiredXHRHere;
    },
    dataType: "text", 
    success: function(data) {         
        $("#menu").html(data);
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
    }
});
于 2013-01-10T20:45:55.147 に答える