1

私は本当に混乱しています。次のリンクをブラウザに投稿すると、問題なく機能しますが、jQueryに実行を依頼すると、空白に戻りますが、エラーは発生しません。

リンク

http://www.theyworkforyou.com/api/getConstituency?key=FU8MWTEQnvVsHC6GM7B82zie&postcode=BS345NT

コード

$.ajax({
  url: 'http://www.theyworkforyou.com/api/getConstituency?key=FU8MWTEQnvVsHC6GM7B82zie&postcode='+postcode+'&output=js',
  type: 'POST',
  success: function(response) {
    console.log(response);
   }
});

キーは変更できるので、投稿したことは気にしないでください。

それが機能しない理由はありますか?

4

1 に答える 1

2

JavaScriptは、オリジンサーバーからブラウザにダウンロードされたWebページのコンテキストで実行されています。別のサーバーからページを要求しようとしますが、これは同一生成元ポリシーに違反しています。Javascriptは、オリジンサーバー以外のサーバーにリクエストを送信できません。

JSONP手法を使用してこれを回避できますが、これは非オリジンサーバーがJSONPをサポートしている場合に限ります。この手法では、javascriptコードは、src要素が1)非オリジンサーバーを指し、2)ローカルjavascriptに存在する関数の名前を(クエリパラメーターとして)渡すスクリプトタグを動的に作成します。非オリジンサーバーは、非オリジンサーバーによって提供されたデータに対して関数を呼び出すだけのスクリプトのソースコードを返します。このようにして、JavaScriptは非オリジンサーバーからデータを要求できます。

非オリジンサーバーがJSONPをサポートしていない場合、あなたはあなたが望むことをすることができません。

于 2013-01-11T00:07:52.150 に答える