我正在尝试使用AJAX(XMLHttpRequest)向维基百科的API实现一个简单的请求。如果我在Firefox的地址栏中输入网址,我会得到一个整洁的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请求标题上的内容。
帮助! (谢谢!)
答案 0 :(得分:17)
The 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输出格式并创建回调函数来解析结果并执行您的操作需要在页面上。
答案 1 :(得分:-1)
浏览器不允许您将XHR发送到除该页面所在域之外的其他域。这是出于安全目的。
我已经看到的一种解决方法是在托管页面的域上设置代理,将代理传递给实际的api服务器。见http://ajaxpatterns.org/Cross-Domain_Proxy