0

こんにちは、クロス ドメイン リクエストに対応する REST API 呼び出しを作成する必要があります

Mozilla(残りのクライアント)にリクエストを確認したところ、htmlでjquery/javascriptを介して書き込む方法がデータとして提供されました。

{"POST to adengine":{"method":"POST","url":"http://xxx.com/Advertisement/1.0/GetAds","body":"aid=Apposaurus_xxx","overrideMimeType":false,"headers":[["Content-Type","application/x-www-form-urlencoded"]]}}

これがhtmlのサンプルコードです

<html>
<title></title>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">

JSONTest = function() {
    var resultDiv = $("#resultDivContainer");
    $.ajax({
        url: "http://xxx.com/Advertisement/1.0/GetAds",
        type: "POST",
        data:  "aid=Apposaurus_xxx",        
        overrideMimeType:'false',
        crossDomain: 'true',
        dataType: 'jsonp',
        headers:{"Content-Type":'application/x-www-form-urlencoded'},

        success: function (result) {
            switch (result) {
                case true:
                     processResponse(result);
                    break;
                default:
                    resultDiv.html(result);
            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        }    
});
};
</script>
</head>
<body>


<div id="resultDivContainer"></div>

<button type="button" onclick="JSONTest();">JSON</button>

</body>
</html> 

どこが間違っていますか?

4

2 に答える 2

0

コードを少し変更して、コンソールに記録される内容を教えていただけますか? console.log の実装がひどい (Object.Object を表示する) IE は使用しないでください。Firebug を搭載した Chrome または Firefox は、より適切に機能します。

提案された変更:

        success: function (result) {
console.log("here is the result:",result);
//            switch (result) {
//                case true:
//                     processResponse(result);
//                    break;
//                default:
//                    resultDiv.html(result);
//            }
        },
        error: function (xhr, ajaxOptions, thrownError) {
console.log("this is the error",arguments);
//        alert(xhr.status);
        } 
于 2013-02-07T06:15:25.273 に答える
0

クロス ドメイン リクエストは、JSONP を使用して実行する必要があります。JSONP はJSON with Paddingの略です。ここで少し説明してみます。

サーバーからデータ (JSON の場合はスクリプト) をどのようにフェッチしますか? 次の 2 つの方法があります。

  1. オブジェクトのインスタンスを使用して舞台裏で行われXMLHttpRequest、同じドメインにのみ送信されるように制限されているajax リクエスト
  2. 単純な HTTP Get リクエスト。これは<script>、HTML ドキュメントのどこかにタグを挿入することによって行われます。ほとんどの場合、head セクションです。

2 番目の手法は、クロスドメイン ポリシーに限定されません。ただし、次の 2 つのシナリオでブラウザーがエージェントとしてどのように機能するかを調べてみましょう。

ajax シナリオ: 開発者コード => ブラウザー => 要求 => サーバー => 応答 => ブラウザー => 開発者コード。これは、ajax を使用すると、ブラウザが代わりに HTTP リクエスト (X-Requested-With: XMLHttpRequestヘッダー フィールド付き) を作成し、それをサーバーに送信し、それからレスポンス ベースを取得することを意味します *しかし、それはあなたにレスポンスを返すので、開発者として、応答を分析し、それでやりたいことを何でもする機会があります。

HTTP Get シナリオ: 開発者コード => ヘッド内のスクリプト タグ => ブラウザー => 要求 => サーバー => 応答 => ブラウザー => 応答の実行。

見る?JSONP を使用する場合、またはヘッダーに単純な<script>タグを挿入する場合、ブラウザーはサーバーからスクリプトを取得しますが、スクリプトを実行して終了します。あなたは応答に夢中になっておらず、それを制御することもできません。callbackしたがって、そのための関数を提供する必要があります。実行されると、結果を取得して何かを行う機会が与えられるという点でcallback({})異なります。{}

于 2013-02-07T06:01:51.310 に答える