5

http://host:port/...タイトルが示すように、Web URL への jQuery AJAX 呼び出しを使用して、またはhttp://localhost:8080/...ローカルの HTML ファイルからアクセス (POST) しようとしていますc:\home.html。私はそれを働かせることができません。

私はGoogleを行い、ここでもいくつかの質問を見ましたが、うまくいきません。ここで助けが必要です。これが私がこれまでに試したことです。

  1. データ型: jsonp
  2. クロスドメイン: 真
  3. 私の応答でヘッダーを設定します。
response.setHeader("Access-Control-Allow-Origin", "*");

IE、FF、Chrome の 3 つのブラウザのいずれも機能していません。リクエストがサーバーに到達していません。ここに私が見ているエラーのいくつかがあります。

  1. jsonp が使用されていない場合は、トランスポートなし (IE) です。
  2. NS_BINDING_ABORTED / FF のコンテンツの読み込みエラー (NS_ERROR_DOCUMENT_NOT_CACHED)

これは私のコードです。助けていただければ幸いです。を使用してjquery-1.8.2.min.jsいます。

var http_host =  "http://localhost:8080";

function su (pc, p) {
    var suUrl = http_host + "/ps/api/v2/authorize.json";

    $.ajax({
        type: 'POST',
        url: suUrl,
        data: {
            phone_cell: pc,
            password: p,
        },
        dataType: "json",
        crossDomain: true,
        success: osu,
        error: oe
    });
    return false;
}

function osu (d) {
    console.log(d);
}

function oe(xhr, ts, et)     {
    alert("ServerError: " + et);
}

例は完璧なポインターです。

4

2 に答える 2

4

私が試していたさまざまなソリューションすべてで、コードが台無しになったと思います。ヘッダーを設定することで、ようやく機能するようになりました(他の人に推奨され、機能するソリューション)。それを機能させるために私がしなければならなかったことは、REST サービスの応答に以下を追加することだけです。

response.setHeader("Access-Control-Allow-Origin", "*");

アップデート:

私はこれを理解したと思ったが、そうではなかった。ヘッダーを設定するだけではありません。とにかく、私の特定の状況では。特にクロムでハードドライブからアプリ(html、js)を実行しようとしていて、クラウドで利用可能なWebサービスにアクセスしようとしていました。

これが私が最終的に問題を解決した方法です。次のパラメーターを使用してクロムを開始しました。

--disable-web-security -–allow-file-access-from-files

前述したように、このアプリは実際にはクロム組み込みフレームワークの一部として実行されるデスクトップ アプリケーションです。

ご意見をお寄せいただきありがとうございます。

于 2012-12-11T09:40:56.023 に答える
3

ドメイン上にないため、ローカル ファイルからクロスドメイン リクエストを行うことはできません。C:\home.html動作させるには、ローカル Web サーバー インスタンスでホストする必要があります。

于 2012-12-11T08:40:37.677 に答える