jquery
  • ajax
  • 2011-10-13 66 views 5 likes 
    5

    我刚刚从$.ajax()开始。这是我的代码:

    <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> 
    

    出于某种原因,我得到了以下错误消息:

    的XMLHttpRequest无法加载 http://commons.wikimedia.org/w/api.php?action=query&generator=allimages&gailimit=4&gaifrom=T&prop=imageinfo&iiprop=url&callback=? Access-Control-Allow-Origin不允许原始位置为null。

    回答

    1

    更新:此方法从jQuery 1.9中弃用。不再工作了。

    老答案:

    试试这个(更新):

    $.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); }); 
    }); 
    

    更多jQuery.support.cors设置在这里:jQuery.support

    附:谢谢你的一个很好的问题!我相信这对未来的我也是有用的。

    +1

    同样的问题... – Randomblue

    +0

    我已经更新了答案 –

    +0

    我认为这样做已经不再适用了,刚刚在Chrome for Mac版本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= ?. Access-Control-Allow-Origin不允许Origin null。 –

    -3

    您需要了解AJAX请求的跨域限制,这会阻止您出于安全原因在后台加载任意网站。有关更多信息,请参阅here

    旧答
    当您使用$(foo)你需要指定你的意思修改foo的元素。你可能要找的东西是这样的:

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

    这将在文档完成设置其DOM结构后执行函数。

    +1

    我不明白你在说什么。 '$()'是'$(document).ready()'的快捷方式。 – Randomblue

    +0

    确实。我没有意识到。 :)之前从未见过。我在答复中增加了第二部分。也许这有帮助。 –

    +0

    关于你的新答案:我不认为这是一个跨域限制。我正在做的另一件事是从Google的CDN加载jQuery。 – Randomblue

    相关问题