2011-10-13 31 views
5

私はちょうど$.ajax()で始まります。これは私のコードです:

のXMLHttpRequestが http://commons.wikimedia.org/w/api.php?action=query&generator=allimages&gailimit=4&gaifrom=T&prop=imageinfo&iiprop=url&callback=をロードすることはできません:私は、次のエラーメッセージが表示されますいくつかの理由

<html> 
<head> 
    <title>Commons app</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
</head> 
<body> 
<script type='text/javascript'> 
    if($) console.log('jQuery loaded!\n'); 

    $(function() { 
     $.ajax({ 
      url: 'http://en.wikipedia.org/w/api.php?action=query&list=allimages&ailimit=5&aifrom=Albert&aiprop=dimensions|mime&format=jsonfm&callback=?' 
     }) 
     .done(function() { console.log('Yay!'); }) 
     .fail(function() { console.log('Error!'); }) 
     .always(function() { console.log('Complete!'); }); 
}); 
</script> 
</body> 
</html> 

?。 Originのnullは、Access-Control-Allow-Originによって許可されていません。

答えて

1

更新:このメソッドはjQuery 1.9から非推奨です。もう動作しません。

旧答え:

(更新)これを試してみてください:jQuery.support

P.S.:ここで設定jQuery.support.corsについて

$.support.cors = true; 

$(function() { 
    $.ajax("http://commons.wikimedia.org/w/api.php?action=query&generator=allimages&gailimit=4&gaifrom=T&prop=imageinfo&iiprop=url&callback=?") 
    .complete(function() { alert('complete'); }) 
    .error(function() { alert('error'); }) 
    .success(function (data) { alert(data); }); 
}); 

詳細素敵な質問をありがとう!私は将来私にとっても役に立つと信じています。

+1

同じ問題が発生しました... – Randomblue

+0

回答が –

+0

に更新されました。これはもう機能していないと思います。Mac用Chromeバージョン30.0.1599.101でテストしました。 XMLHttpRequestはhttp://commons.wikimedia.org/w/api.php?action=query&generator=allimages&gailimit=4&gaifrom=T&prop=imageinfo&iiprop=url&callback=?を読み込めません。 Origin-nullはAccess-Control-Allow-Originによって許可されていません。 –

-3

安全上の理由から、バックグラウンドで任意のWebサイトを読み込まないようにするAJAXリクエストのクロスドメイン制限を認識する必要があります。詳細については、hereを参照してください。

旧回答
あなたが$(foo)を使用する場合は、あなたが変更することを意味している要素fooで指定する必要があります。文書は、そのDOM構造の設定が完了後、これは、機能を実行します

$(document).ready(function(){ 
    // do something 
} 

:あなたは、おそらく探していることは、このようなものです。

+1

あなたの言っていることを理解できません。 '$()'は '$(document).ready()'のショートカットです。 – Randomblue

+0

確かに。私は気付かなかった。 :)前にそれを見たことはありません。私は答えに2番目の部分を追加しました。多分それは助けます。 –

+0

あなたの新しい答えについて:私はそれがクロスドメイン制限だとは思わない。私がやっている唯一のもう一つは、GoogleのCDNからjQueryを読み込むことです。 – Randomblue

関連する問題