Google Chrome扩展程序 - AJAX回调未被解雇

时间:2016-11-16 18:02:59

标签: 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)
{
    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(),则会触发回调。

如果我在开发工具中检查网络,则每个请求都成功,服务器返回预期的响应。但是如果从侦听器回调中调用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
    }
}

0 个答案:

没有答案