维基百科通过Ajax没有服务器响应

No server response from Wikipedia via Ajax

本文关键字:Ajax 响应 服务器 百科      更新时间:2023-09-26

我对JavaScript/jQuery完全陌生,所以作为一个不错的"HelloWorld"项目,我想建立一个网页,它只是抓取一个随机的维基百科文章,并显示标题和第一段。谷歌一下,看起来ajax是这样做的,所以我写了一个简单的脚本(现在有一个固定的url):

<script>
    $(document).ready(function () {
        $.ajax({
            url: 'https://en.wikipedia.org/wiki/Flemingdon_Park',
            type: 'GET',
            dataType: "html",
            success: function (data)
            {
                alert('Success!');
                $('#MainHeader').html($(data).find('#firstHeader').html());
            },
            error: function (xmlHttpRequest, textStatus, errorThrown)
            {
                var serverNotReached = xmlHttpRequest.readyState == 0 || xmlHttpRequest.status == 0;
                if (serverNotReached)
                    alert("No response from the server!");
                else
                    alert(errorThrown);
            }
        });
    })
</script>

我的问题是我只从维基百科得到"服务器没有响应"。我试着用邮差和完全相同的url做一个GET,返回了我所期望的html。接下来,我尝试了http://stackoverflow.com脚本,但同样的事情。最后,我尝试了http://www.msn.com, 确实工作。我假设我在这里遗漏了一些基本的东西,但我不确定是什么。

http://en.wikipedia.org/w/api.php就是您要找的。它有非常详细的文档,支持JSONP:

  • 获取10个随机页面名:https://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&rnlimit=10&format=jsonfm&callback=my_callback
  • 获取这些页面的前300个字符:https://en.wikipedia.org/w/api.php?action=query∝extracts&exchars=300&format=jsonfm&callback=my_callback&titles=<管道(|)加入标题列表>

format=jsonfm改为format=json

听起来你违反了跨域资源共享

试试JSONP ?