使用jQuery和ajax从公司wiki中获取数据

时间:2010-05-18 09:31:50

标签: javascript jquery ajax mediawiki

以下javascript代码为我提供了“> success-<”,即空数据。在我的浏览器中粘贴网址会给我预期的内容。

$.get("http://company.tld/wiki/api.php?action=query&titles=Page%20Title&format=xml&prop=revisions&rvprop=content", function (data, status) {
    alert(">" + status + "-" + data + "<");
});

这是一个MediaWiki维基。这是MediaWiki API规范:http://www.mediawiki.org/wiki/API:Query

为什么我没有收到任何数据?

2 个答案:

答案 0 :(得分:0)

如果data是对象,您将收到结果。请尝试在警报中使用typeof data

<强>已更新: 致jAndy:在jQuery.ajax的文档中,我们可以阅读以下内容(参见http://docs.jquery.com/Ajax_Events):

  • 成功(本地活动)。 仅当请求成功时才会调用此事件(服务器没有错误,数据没有错误)。

我刚尝试执行以下代码

try {
    $.ajax({url:"http://en.wikipedia.org/w/api.php?action=query&titles=jQuery&format=xml&prop=revisions&rvprop=content",
            success: function (data, status, x) {
             alert ("ok");
            },
            error: function (data, status, x) {
             alert ("not ok");
            },
            dataType:"xml"});
} catch (e) {
    alert ("exception");
};

我尝试使用跨域调用。在IE中我可以看到“异常”警报。在Chrome和Firefox中:“不行”。如果出现错误,函数成功将 NOT

因此来自服务器的数据实际上是Tobbe网址的空字符串(“”)。

To Tobbe :你应该添加最后一个参数“xml”。

答案 1 :(得分:0)

您可能违反了那里的ajax跨域政策。 您尝试访问自己的域名吗?更好的说,你的脚本中的那个?

根据我的经验,如果您尝试从外部域访问数据,则无论如何都会触发成功处理程序。但正如你所描述的那样,根本没有数据。