从API加载XML

时间:2011-01-27 19:12:36

标签: javascript jquery xml ajax

使用jQuery,我尝试从Dictionary.com的API加载定义文件:

var tmpWord = "hello";    
jQuery.ajax({
            type: "GET",
            url: "http://api-pub.dictionary.com/v001?vid=<MYKEY>&q="+tmpWord+"&site=dictionary",
            dataType: ($.browser.msie) ? "text/xml" : "xml",
            success: function(xml) {
                console.log($(this).text());
            }
        });

(注意:我已故意将API密钥替换为有意使用的东西,所以你很多都不会窃取它:P)

无论如何,出于某种原因,这将在IE中返回结果,但不会返回Firefox:'( 即使我强迫dataType: 'xml',这也是一样的 任何想法大师?

干杯。

神经

3 个答案:

答案 0 :(得分:3)

这不是跨域脚本问题吗?这是不允许的。 IE为您提供了根据您的安全级别覆盖设置的选项,但是Firefox不允许跨域脚本编写

Wikipedia Article:Cross-site scripting

也许我的背景错了,但这是我的2美分。

另外,如果有人能在源头阅读你的ApiKey,为什么你会在客户端上这样做呢?

答案 1 :(得分:1)

您是否只想将XML作为文本字符串访问?

如果是这样,这应该可以解决xml对象

的问题
string = new XMLSerializer().serializeToString( xml )

答案 2 :(得分:0)

好的,所以我设法使用以下语句对此进行排序:

window.dict_api_callbacks = function(theObj) {
        window.result = theObj.primaries[0].entries[1].terms[0].text;
    }

    $.getScript("http://www.google.com/dictionary/json?callback=dict_api_callbacks&q="+tmpWord+"&sl=en&tl=en&restrict=pr%2Cde&client=te", function() { 
    //code
});

...然后将window.result作为项目的文本返回。我放弃了Dictionary.com API - 与通用谷歌“非官方”API相比,它看起来粗糙和笨拙。

无论如何,谢谢你 - 我已分发积分。

<磷>氮