使用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'
,这也是一样的
任何想法大师?
干杯。
神经
答案 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相比,它看起来粗糙和笨拙。
无论如何,谢谢你 - 我已分发积分。
<磷>氮