12

我正在尝试使用 AJAX (XMLHttpRequest) 实现对维基百科 API 的简单请求。如果我在 Firefox 的地址栏中键入 url,我会得到一个整洁的 XML,那里不费吹灰之力。然而,调用完全相同的网址:

// 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 请求的标头上遗漏了一些东西。

帮助!(谢谢!)

4

2 回答 2

17

Wikipedia API确实支持JSONP。你的查询字符串会变成这样:

http://en.wikipedia.org/w/api.php?action=query&format=json&callback=test&prop=langlinks&lllimit=500&titles=kaas

但是您必须构建 jsonp 处理程序(或者您可以使用您喜欢的库来执行此操作),从您选择的 xml 切换到 json 输出格式并创建回调函数来解析结果并在页。

于 2010-03-03T23:50:20.707 回答
-1

浏览器不允许您将 XHR 发送到页面所在的域以外的另一个域。这是出于安全目的。

我看到的一种解决方法是在托管页面的域上设置一个代理,它将请求传递到实际的 api 服务器。请参阅http://ajaxpatterns.org/Cross-Domain_Proxy

于 2010-03-03T19:43:44.500 回答