2013-08-16 23 views
6

ここにはいません。私は別のドメインからXMLファイルを読む必要があるクライアントスクリプトを書いています。私はJSONPを使ってみました。私は200の応答を取得しますが、クライアントは何らかの理由で返されたデータにアクセスできません。私はデータをレンダリングしようとするとクロスドメインAJAXでXMLを読む

$(document).ready(function() { 
    $.getJSON("urlOfFilecallback=?", function(data) { 
    console.log(data) 
}) 
}); 

:ここでは、コードは(それは機密なので、私はXMLのURLを削除しました)です

Resource interpreted as Script but transferred with MIME type text/xml 

Uncaught SyntaxError: Unexpected token < 

:私は2つのエラーを取得しますコンソールでは、私は得る:

ReferenceError: data is not defined 

どうすれば修正できますか?プロキシを使用する必要がありますか?

答えて

1

デフォルトでは、ドメイン間の要求に対してXMLは許可されていません。

しかし、少しのサーバーサイドプログラミングでは、プロキシを作成して独自のドメイン内にデータをロードし、XMLとして出力することができます。あなたが他のドメイン側へのアクセス権を持っている場合は

詳細については、このQuestion

+1

ところで、私はそうはい、PHPスクリプト – Alex

1

を参照してください、あなたもあなた自身のプロキシを記述する必要はありません。このアプローチCross Domain Request

15

を使用することができます。ここ

//sample site that returns xml 
site = 'http://goo.gl/9iQWyG'; 


var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + site + '"') + '&format=xml&callback=?'; 

// Request that YSQL string, and run a callback function. 
// Pass a defined function to prevent cache-busting. 
$.getJSON(yql, function(data){ 
    console.log(data.results[0]); 
}); 

jsfiddleチェックにconsole.logです:あなたはここにしたい場合は、どのように例であるYQLを使用することができます。

(公共YQLのAPIのUsage limitsがIPあたり2,000リクエスト/時間である)

+1

を作る他の方法があり、IE8と下がクロスドメインXHRリクエストをサポートしていないと思いますyqlを使うよりも?彼らがあなたのIPやドメインをブロックする場合に備えて、それはビジネスのためのgooではないと私は信じています - それは突然下がるでしょう! –

+0

理論的には、独自のプロキシサーバーを作成し、同じ結果を得ることができます。おそらく使用して実装するのが簡単です。ただし、それがなければ、常にサードパーティのプロキシサーバーに依存する必要があります。 – Shaunak

+0

ご返信ありがとうございます...独自のプロキシサーバーの作成方法に関するご提案はありますか?どうもありがとう! –