0

サーバーからhtmlを取得するためにajax呼び出しを使用するアプリケーションに取り組んでいます。サーバーで実行すると、すべて正常に動作します。

しかし、ローカルホストで実行していると、'Access-Control-Allow-Origin' エラーが発生します。私は周りを見回しましたが、jsonpを使用することが解決策になるようです。

したがって、私の ajax 呼び出しは次のようになります。

$.ajax({
    url: url,
    dataType: 'jsonp',
    crossDomain: true,
    type: 'GET',
    success: function(data){
        // should put the data in a div
    },
    error: function(){
        //do some stuff with errors
    }
});

サーバーから html を取得しますが、常に次のエラーが発生します。

Uncaught SyntaxError: Unexpected token < 

jsonp 応答を html でラップする方法はありますか?

ありがとう!

4

2 に答える 2

2

JSONP を使用して HTML ドキュメントを取得することはできません。HTML を JavaScript 変数でラップする必要があります。JSONP には、コールバック関数/属性など、適切に機能させるための非常に具体的な要件がいくつかあります。ターゲット ページをホストしているサーバーを制御できない場合、それを機能させることはできません。これは、ランダムなページが AJAX 呼び出しを介してログインしているサイトから個人情報を盗むことができないようにするためのセキュリティ対策です。

アップデート

あなたの質問をもっとよく読みました。あなたの問題は、問題のリソースがない開発環境にいることのようです。JSONP は答えではありません。なぜなら、ページを開発中に機能させるためだけに実行するのは大変だからです。ターゲット HTML のローカル コピーを作成し、次のような相対 URL またはサーバー絶対 URL を使用して取得する必要があります"/the/page/i/need.html""http://myserver.com/the/page/i/need.html"

于 2012-09-06T03:35:23.220 に答える
1

jsonp でデータを取得する場合は、サーバー側で jsonp をサポートする必要があります。

を変更しdataTypeてデータを取得する方法はありません。

サーバー側が jsonp をサポートしていない場合は、ローカルホストでプロキシを作成する必要があります。

于 2012-09-06T03:32:42.963 に答える