我目前正在开发一个 GreaseMonkey 用户脚本,以提供对 Intranet 应用程序中某些表单字段的直接翻译。
一切正常,直到我使用以下代码调用 Google Translation API:
var apiurl = 'https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=fr%7Cen&q=';
$.getJSON(apiurl+encodeURIComponent(text)+"&callback=?",function(data){
alert('Translation Complete');
//Change text
});
这是我的问题:
- 我被迫使用 JSONP,因为这是一个跨域请求。
&callback=?
为此,我在 URL 的末尾添加了字符串。回调未getJSON
触发(但响应数据正确),我在 Firebug 控制台中收到此错误:
jsonp1298988446807 未定义
如果我改用 a
&callback=foo
,FF 似乎不喜欢它,因为我的请求不再是 POST 请求,它没有完成但它显示(在网络面板中)OPTIONS request_url 405 Method Not Allowed
如果我创建一个自定义函数以指定为回调,它也不起作用,因为该函数没有被调用(它只包含一个警报以检查它是否有效)。
如果有人知道为什么这不起作用,请帮助我,因为我差点把头撞到墙上(也许会有所帮助^^)。
谢谢。
编辑:感谢 Scoobler,我相信我已经走得更远了。
/ignore
使用他的代码,我已经设法从我的脚本中得到了更多的东西
该请求未出现在 Firebug 的网络选项卡中,并且警报给出的响应是:
响应文本:未定义
返回状态:错误
抛出的错误:抛出的错误:[异常...“组件不可用”nsresult:“0x80040111(NS_ERROR_NOT_AVAILABLE)”位置:“JS 框架 :: file:///C:/Documents%20and%20Settings/username/Application% 20Data/Mozilla/Firefox/Profiles/jmbr7ut9.default/extensions/%7Be4a8a97b-f2ed-450b-b12d-ee082ba24781%7D/components/greasemonkey.js :: 匿名 :: line 396" data: no]
与此同时,我一直在自己研究,遇到了一个跨域请求的 jQuery/GreaseMonkey 桥,这里有一个完整的演练(来自这篇文章),但这显示的错误与 Scoobler 的脚本完全相同