0

わかりましたので、jsonpを使用してクロスドメインajax Webサービス呼び出しを試みて、カテゴリのリストを返してドロップダウンリストに入力し、奇妙な結果を得ています。できるだけ多くの例に従い、自分のドメインで動作する jsonp リクエストを取得しましたが、他のドメインでは動作しません。

以下のコード:

  function parseJSON(item){
    return   JSON.parse(item, function (key, value) {
                    var type;
                    if (value && typeof value === 'object') {
                        type = value.type;
                        if (typeof type === 'string' && typeof window[type] === 'function') {
                            return new (window[type])(value);
                        }
                    }
                    return value;
                });
    };


    function getCategories() {
        var webserviceURL = 'http://www.theprintersinc.co.uk/TPIWS.asmx/getCategories';
        var myData;

        $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: webserviceURL,
            data: { galleryGuid: 1 },
            dataType: "jsonp",
            complete: function (msg) {
                if (msg) {

                var myObject = parseJSON(msg.responseText);
                var myCatList = parseJSON(myObject.d);

                        if (myCatList) {
                             catList = myCatList;
                             setCatDDL();
                        };
                };
                //reset close button
             },
            error: function (xhr, ajaxOptions, thrownError) {
                var err = "err";
            }
         });

    };

http://www.theprintersinc.co.uk/stackHelp.htmlで私のドメインでこれが機能していることを確認できます。 ただし、私の PC または別のサーバーで単純な html ファイルからこのコードを実行しようとすると、機能しません。jbug から構文エラーが発生します。

すべてのヘルプは事前に大歓迎です!

ニック

4

1 に答える 1

0

私は専門家ではありませんが、「同一オリジン ポリシー」制限に関する jquery ドキュメントで指定されている内容を考慮することができます: http://api.jquery.com/jQuery.getJSON/

「追加メモ: ブラウザのセキュリティ制限により、ほとんどの「Ajax」リクエストは同じオリジン ポリシーの対象となります。リクエストは、異なるドメイン、サブドメイン、またはプロトコルからデータを正常に取得できません。スクリプトと JSONP リクエストは、同じオリジン ポリシーの対象ではありません。オリジンポリシーの制限。」

JSONP を使用するには、callback=? を追加する必要があります。あなたのURLに。同じ jquery ドキュメントに、例があります。

于 2013-03-24T17:31:19.767 に答える