Failing AJAX request in a Chrome extension, with correct manifest permissions?
我正在编写Chrome扩展程序,它执行简单的ajax调用(基于此示例来自文档):
1 2 3 4 5 6 7 8 | $.ajax({ type:"GET", url:"http://www.flags.99k.org/getFlags.php" }).done(function(response) { alert("SUCCESS:" + response); }).fail(function(response) { alert("FAILURE:" + response); }); |
请求始终失败,因为警报显示:
该URL有效:当我将http://www.flags.99k.org/getFlags.php放入我的地址栏时,我得到了这个:
1 | [{"UID":"1","Message":"Hello"}, {"UID":"2","Message":"World"}, {"UID":"3","Message":"Hello World"}] |
这是我的manifest.json扩展名。
1 2 3 4 5 6 7 8 9 10 11 12 | { "name":"Hello World", "version":"1.0", "description":"The first extension that I made.", "browser_action": { "default_icon":"icon.png", "default_popup":"popup.html" }, "permissions": [ "http://www.flags.99k.org/" ] } |
我使用Chromium 17.0.963.79(Developer Build 125985 Linux)Ubuntu 11.10。
目前,只允许通过清单中的权限访问根目录。您必须在URI之后添加通配符到权限:
1 2 3 | "permissions": [ "http://www.flags.99k.org/*" ] |
另请参见:匹配模式。
编辑:更新的代码不起作用,因为
1 2 3 4 | "permissions": [ "http://flags.99k.org/*", "http://www.flags.99k.org/*" ] |
而不是......
1 | alert("FAILURE:" + response); |
...做...
1 2 | console.debug('FAILURE'); console.debug(response); |
然后,如果你去控制台(在Windows上的ctrl-shift-j)你会看到一个对象,你可以扩展它以查看它的所有属性,什么不是,这真的有帮助。另外,您在执行请求时是否看过控制台?您可能会收到一些错误消息。
这可能是一个跨域问题。
当您在地址栏中输入URL时,它可以正常工作,因为它是从主机传送到您的浏览器的。
因为您试图访问托管域之外的完整URL - 您可能需要使用JSONP。