Jquery Google Chrome扩展-未触发AJAX回调
我正在构建一个简单的Chrome扩展,并尝试在更新选项卡后运行Ajax请求。简单地说,每次访问新域时,都会检查该域是否受支持 我对Ajax回调有问题;它从未开火过。成功、错误或完成,都不会被激发。具体来说,这是在chrome.tabs.onUpdated.addListener回调中发出Ajax请求时。因此,下面的方法不起作用: background.js:Jquery Google Chrome扩展-未触发AJAX回调,jquery,ajax,google-chrome,google-chrome-extension,Jquery,Ajax,Google Chrome,Google Chrome Extension,我正在构建一个简单的Chrome扩展,并尝试在更新选项卡后运行Ajax请求。简单地说,每次访问新域时,都会检查该域是否受支持 我对Ajax回调有问题;它从未开火过。成功、错误或完成,都不会被激发。具体来说,这是在chrome.tabs.onUpdated.addListener回调中发出Ajax请求时。因此,下面的方法不起作用: background.js: chrome.tabs.onUpdated.addListener(function(tabid, changeInfo, tab) {
chrome.tabs.onUpdated.addListener(function(tabid, changeInfo, tab)
{
test();
});
function test()
{
$.ajax(
{
url: 'http://exampledomain.com/check.php',
type: 'post',
dataType: 'JSON',
data: {domain: 'test'},
error: function(jqXHR, textStatus, errorThrown)
{
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
},
success: function(data, textStatus, jqXHR)
{
console.log(data);
},
complete: function(jqXHR, textStatus)
{
console.log(jqXHR);
console.log(textStatus);
}
});
}
但是,如果在侦听器外部调用test(),则会触发回调
如果我在dev工具中检查网络,则每个请求都是成功的,服务器返回预期的响应。但是,如果从侦听器回调中调用Ajax,则永远不会捕获响应
为清楚起见,清单如下:
{
"manifest_version": 2,
"name": "Test Extension",
"description": "Extension Description",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html",
"default_title": "Popup Title"
},
"permissions": [
"storage",
"tabs",
"notifications",
"http://exampledomain.com/"
],
"background": {
"scripts": ["jquery.min.js", "background.js"],
"persistent": true
}
}
您可以尝试使用fetch,或者如果它在其他扩展api侦听器中工作,则可以使用它。@DanielHerr感谢您的回复。Fetch显然是我可以使用的一个很好的选择。我将保留这个问题,因为我真正感兴趣的是为什么会出现这个问题。它是否发生在其他chrome扩展api侦听器中?@DanielHerr刚刚用chrome.storage.sync.get快速测试了一下,是的,Ajax请求似乎工作得很好。回调正在运行。您可以尝试使用fetch,或者如果它在其他扩展api侦听器中有效的话。@DanielHerr谢谢您的回复。Fetch显然是我可以使用的一个很好的选择。我将保留这个问题,因为我真正感兴趣的是为什么会出现这个问题。它是否发生在其他chrome扩展api侦听器中?@DanielHerr刚刚用chrome.storage.sync.get快速测试了一下,是的,Ajax请求似乎工作得很好。正在运行回调。