2012-03-07 7 views
0

javascript/jqueryの新機能です。jQuery.get()エラーを返す

私は、次の基本的なコードを持っていると私は、「エラー」の警告メッセージが受信し続ける:

var jqxhr = $.get('my_url', 
       function(data) { 
       alert("success"); 
      }) 

      .success(function() { 
       alert("second success"); 
      }) 
      .error(function() { 
       alert("error"); 
      }) 
      .complete(function() { 
       alert("complete"); 
      }); 

注私はコピーして、ブラウザでmy_urlを貼り付ける場合、私は戻ってxmlファイルを取得していることを。私は間違って何をしていますか?どのように詳細なエラー記述を得ることができますか?

+0

ブラウザのコンソールとそのネットワークタブを使用します。 – lonesomeday

+1

ちょうど確認するために、 'my_url'は**ではなく**正しい変数ですか? –

+1

Firebugsの「ネット」タブを使用して、送受信される内容を確認します。 – Fermin

答えて

1

あなたのエラー:

XMLHttpRequest cannot load 'my_url'. Origin null is not allowed by Access-Control-Allow-Origin. 

は、あなたが同じ起源の問題を持っていることを示しています。ホストWebページのドメインとは異なるドメインにajax呼び出しを行うことはできません。

this MDN referenceを参照してください。同じ発信元ポリシーで同じ発信元についての詳細は、こちらをご覧ください。

回避策は、JSONP(同じ発信元ポリシーに従わないスクリプトタグを使用します)を使用することですが、この操作でJSONPをサポートするようにサーバーを変更する必要があります。

1

$ .ajaxSettings()関数の応答タイプを 'text/xml'に変更しましたか?

応答タイプとして 'text/html'が必要で、 'text/xml'を取得している場合は、問題が発生する可能性があります。

また、Fiddlerを使用すると、実際に何が応答しているかを知ることができます。

+0

Qpirateさん、ありがとうございました。私はChromeの 'ctrl-shift-J'を使用して、問題点を把握しました。コメントにはより多くの情報がありますが、これを修正する方法は分かりますか? – Gevorg

+0

私はJSONPを使ってクロスドメインコールを行います。@ jfriend00が言いましたように。 – Qpirate

1

実際には、クロスオリジンの問題を解決する方法は3つしかありません。

  1. CORS
  2. ユーザーに、このようなYQL
  3. としてプロキシスクリプトまたはプロキシサービスをリモートサーバのサポートを行い、クロスオリジン・リクエストをサポートしていJSONPデータ型を使用します。このソリューションでは、サーバーでXMLの代わりにJSONPが返される必要があります。