1

私はここで少しばかげていると感じます。私のajax呼び出しはエラーを実行しています:毎回関数。データが JSON として返されることはわかっていますが、データ型を jsonp として実行し、クロスオリジンのものを許可しました。明らかな何かを忘れていない限り、これまでと違うことはできないと思います。お願いします-これの何が問題なのですか:

function sartleApi(type,endpoint,object,callback){


 $.ajax({
    contentType: "application/json",
    dataType: 'jsonp',
    type:type,
    data:object,
    url:"http://dev.sartle.com/includes/ajax_reviewcomment.php?rid=1178",
    success:function(data){
        callback(data);
    },

    error: function (xhr, textStatus, errorThrown) {
        alert(xhr.statusText);
        alert(xhr.responseText);
        alert(xhr.status);
        alert(errorThrown);
    }
});

}
4

4 に答える 4

2

あなたのウェブサイトは JSONP をサポートしていません。

<script>JSONP は、JSON オブジェクトをタグを介してグローバル コールバック関数に渡すための優れた方法です。そもそも AJAX リクエストを送信せず、代わりに<script>タグを作成することで、クロスオリジンの制限を回避します。

JSON 応答は次のようになります。

{"foo": "bar"}

ただし、JSONP 応答は次のとおりです。

some_callback({"foo": "bar"})

その PHP スクリプトは JSON 応答をコールバック関数 (通常、名前はcallbackGET パラメーターで指定されます) でラップしないため、単純に JSONP 要求を作成することはできません。リクエストは成功しますが、グローバル コールバック関数が呼び出されないため、JSON を使用できません。

于 2013-07-26T23:47:49.410 に答える
0

そのため、クロスドメインの問題を回避しようとすると、jSONP を使用することは悪い考えであることが判明しました。これらの呼び出しをローカルホストから実行しているので、ajax 呼び出しの URL を次のように変更しました。

url:"http://localhost/includes/ajax_reviewcomment.php?rid=1178"

この URL を動的に構築して、現在の URL が常にサーバーとドメインの一貫性を保てるようにします。

于 2013-07-26T23:46:55.390 に答える