使用 AJAX (XMLHttpRequest) 查询维基百科的 API
我正在尝试使用 AJAX (XMLHttpRequest) 实现对维基百科 API 的简单请求。如果我在 Firefox 的地址栏中输入 URL,我会得到一个简洁的 XML,毫不费力。然而,使用以下命令调用完全相同的 url:
// this is my XMLHttpRequest object
httpObjectMain.open("GET", "http://en.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=kaas", true);
httpObjectMain.send(null);
会返回空响应。根据 FireBug 的说法,我得到了 200 OK 响应,但内容是空的。
我怀疑我可能遗漏了 GET http 请求标头中的某些内容。
帮助! (谢谢!)
I am trying to implement a simple request to Wikipedia's API using AJAX (XMLHttpRequest). If I type the url in the address bar of Firefox, I get a neat XML, no sweat there. Yet, calling the exact same url with:
// this is my XMLHttpRequest object
httpObjectMain.open("GET", "http://en.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=kaas", true);
httpObjectMain.send(null);
returns an empty response. According to FireBug, I get a 200 OK response, but the content is just empty.
I suspect I might be missing something on the header of the GET http request.
Help! (and thanks!)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Wikipedia API 支持JSONP。
你的查询字符串将变成这样:
但是你必须构建 jsonp 处理程序(或者你可以使用你最喜欢的库来完成它),从你选择的 xml 切换到 json 输出格式并创建要解析的回调函数结果并在页面上执行您需要的操作。
The Wikipedia API does support JSONP.
Your query string'll become something like this:
But you'll have to build the jsonp handler (or you can use your favorite library to do it), switch to json output format from the xml you choose and create the callback function to parse the result and do the stuff you need on the page.
浏览器不允许您将 XHR 发送到页面所在域以外的其他域。这是出于安全目的。
我见过的解决这个问题的一种方法是在页面托管的域上设置一个代理,将请求传递到实际的 api 服务器。请参阅http://ajaxpatterns.org/Cross-Domain_Proxy
The browser will not allow you to send an XHR to another domain other than the one the page is on. This is for security purposes.
One way around this that I have seen is to setup a proxy on the domain the page is hosted on that will pass requests through to the actual api server. See http://ajaxpatterns.org/Cross-Domain_Proxy