2011-12-20 5 views
0

私はこの問題が発生します。Ajaxのクロス・ドメイン・エラー

私はローカルホスト上のXMLファイルを提供ジャンゴ(パイソン)サーバー持っている:8080、その必要性:8000

を私はローカルホスト上のTomcatを使ってLiferayのプロジェクトを持っていますこのXMLファイルを呼び出すには(javascriptでajaxで)

ファイルを呼び出しますが、取得することはありません。

このファイルを取得するには何が必要ですか?

ありがとうございます。

編集:ここ

が私の要求である:ここ

$.ajax({ 
     type: 'GET', 
     url: "http://127.0.0.1:8000/charger/entreprise/", 
     dataType: "xml", 
     crossDomain : true, 
     success: function(xml){ 
      alert(xml); 
     } 
    }); 

は私のリクエストヘッダである:問題は、JavaScriptから来る場合

実際に
Host 127.0.0.1:8000 
User-Agent Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0 
Accept application/json, text/javascript, */*; q=0.01 
Accept-Language fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 
Accept-Encoding gzip, deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection keep-alive 
Referer http://localhost:8080/web/guest/home 
Origin http://localhost:8080 

、私は疑問に思う、私は思いますそれはサーバーのためです。

うまくいかない多くの解決策を試した後、ついに私の問題を解決しました JSONPはソリューションで、たとえ私がdjangoにそれを適応させなければならなかったとしても、まったく。

+0

あなたはajaxコールをしたときにエラーが発生しますか? – Shades88

+0

djangoログにはありません。tomcatログにはありません。応答が空であるため、火かき棒にエラーが発生します。 – BlueMagma

+0

URLは正しいですか?それはそれにtypoを持っています 'entreprise'は' enterprise'でなければなりません。 –

答えて

2

クロスドメインAJAXリクエストを行うには、JSONP(JSON Padding)を使用する必要があります。 }

はJSONP

http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

上の情報のために、このリンクを参照してくださいとjQueryも、JSONP機能を備えています。 jqueryのドキュメントでそれを確認してください。

+0

JSONPが最後に働きましたありがとうございました – BlueMagma

+0

jQueryは – BlueMagma

+0

を助けてくれてありがとうございました。 jquery ajaxにはJSONPの属性はありません。しかし、それを行う方法があります。 jquery ajaxのクロスドメインでgoogleを検索しても、たくさんのリンクが見つかるでしょう – Shades88

1

ブラウザでは、デフォルトでクロスドメイン要求をブロックします。詳細については、JSONPをこのように見てみたい場合。

+0

JSONPがやっと働いてくれてありがとう助けてくれてありがとうございます – BlueMagma

1

クロスドメインajaxが唯一の問題である場合は、JSONPとすることができます。

様々なJSフレームワークが既に実装されている(例えばJQuery AJAXのための「クロスドメイン」の設定を探してください)

は、あなたのAJAXリクエストのdataType: "jsonp xml"を設定してください。

+0

私はすでにcrossDomainの設定を試しましたが、うまくいきませんでした – BlueMagma

+0

あなたの質問にJQuery AJAXリクエストを渡す必要がありますだから多分それが間違っているのを見ることができます。また、あなたがJQuery経由でそれから尋ねるサーバとコンテンツタイプから取得したヘッダをチェックします(一致する必要があります)。 – sbgoran

+0

質問に追加しました – BlueMagma

1

他にも言及したように、JSONPはあなたの問題を解決します。これは、クロスドメインAJAX機能を可能にします。

代わりに、DjangoサイトとTomcatサイトの両方でWebサーバーを使用して、プロキシ要求を行うこともできます。たとえば、メインサイトはlocalhost:80上で実行され、URLSに基づいて適切なバックエンドサーバーにプロキシします。このように、クライアントとJavaScriptの観点から、HTMLとJSONリクエストは同じサーバーに送られます。

+0

JSONPが最終的に働きました – BlueMagma

関連する問題