4

xmlここにウェブサイトからアクセスするための私のコードがあります

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "http://rxnav.nlm.nih.gov/REST/Ndfrt/search?conceptName=TESTOSTERONE",
        dataType: "xml",
        success: xmlParser

      });
});

function xmlParser(xml) { 
    $(xml).find("entry").each(function () {
        $(".entirecont").append($(this).find('inputConceptName').text());
    });
}

このコードを本番環境にプッシュすると、ローカルで正常に動作し、クロスドメインの制限が与えられます。

ここにJsFiddleがあります

クロス ドメイン リクエストであることはわかっていますが、どうすれば修正できますか??

ありがとう

4

4 に答える 4

9

XML では、真のクロスドメイン リクエストの唯一の実際のオプションは、そのサーバーがCORSをサポートし、オリジンを許可し、ブラウザがそれをサポートしている場合です。(ただし、 JSONPオプションがあれば、それはより簡単になります。残念ながら、彼らの API ページをざっと見てみると、JSONP ではなく、XML と JSON のみをサポートしていることがわかります。しかし、自分で探してください。私の言葉を鵜呑みにしないでください) 、私は詳細な読み取りを行いませんでした. 私の見解では、JSON をサポートしているのに JSONP をサポートしていない場合は少し奇妙です.)

私が時々議論を聞いたが実行した別のオプションは、YQLクロスドメイン プロキシとして使用することです。

もちろん、独自のサーバーを実行し、それにリクエストを送信し、rxnav.nlm.nih.gov フィードにクエリを実行して返すこともできます。それからSOPはそれに入って来ません。

補足: IE8 または IE9 で jQuery で CORS を使用するには、特別なXDomainRequestオブジェクトの使用を処理するプラグインが必要です (IE8 および IE9 のXMLHttpRequestオブジェクトは CORS を実行しません)。IE10は最終的にそれを修正します。

于 2013-01-28T10:57:49.120 に答える
0

CORSorJSONPは、クロス ドメイン リクエストでのみ使用できます。XML を取得するための AJAX 要求がクロス ドメインで機能しない

回避策は、選択した PHP/ASP.Net/言語を使用してローカル サーバー上にサーバー側プロキシを作成し、代わりに AJAX 経由で呼び出すことです。

于 2013-01-28T10:57:40.927 に答える
0

ajax経由でクロスドメインリクエストを行うことはできません(jsonを期待してください)。

ローカルの ajax リクエストを作成し、サーバー側でクロス ドメイン サーバーに接続して必要なデータを取得することをお勧めします。

于 2013-01-28T10:57:54.163 に答える
0

https://github.com/flensed/flXHRのflxhr を使用して、クロスドメイン ajax 呼び出しを実行できます

使用するサンプルコード

function crossDomainCall(){
    var flproxy = new flensed.flXHR({
        autoUpdatePlayer: true,
        instanceId: "myproxy1",
        onerror: handleError,
        onreadystatechange: handleCrossDomainCall
    });
    flproxy.open("POST", url);
    flproxy.send(null);
}

function handleCrossDomainCall(XHRobj){
    if (XHRobj.readyState == 4) {
        var xmlDoc = XHRobj.responseXML;
        //
    }
}
于 2013-01-28T11:10:17.177 に答える