Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从firefox扩展调用$.ajax无效_Javascript_Ajax_Firefox_Firefox Addon - Fatal编程技术网

Javascript 从firefox扩展调用$.ajax无效

Javascript 从firefox扩展调用$.ajax无效,javascript,ajax,firefox,firefox-addon,Javascript,Ajax,Firefox,Firefox Addon,我正在尝试制作一个firefox扩展,它将在一个页面上列出所有视频。我已经让它作为一个普通的js脚本工作(不是作为扩展),所以我知道这个脚本可以工作 我的问题是firefox扩展中的$.ajax根本没有被调用。如果我查看错误控制台,它会显示一条类似“Jquery的不安全使用”的消息。我曾尝试搜索谷歌和其他网站,但我找不到解决方案 以下是出现问题的代码: var listMainVid = function () { // Make a JSONP call. We are usi

我正在尝试制作一个firefox扩展,它将在一个页面上列出所有视频。我已经让它作为一个普通的js脚本工作(不是作为扩展),所以我知道这个脚本可以工作

我的问题是firefox扩展中的$.ajax根本没有被调用。如果我查看错误控制台,它会显示一条类似“Jquery的不安全使用”的消息。我曾尝试搜索谷歌和其他网站,但我找不到解决方案

以下是出现问题的代码:

    var listMainVid = function ()
{
    // Make a JSONP call. We are using JSONP instead of JSON because we have to make a cross-domain AJAX call
    $.ajax({
        url:        vidinfo_q_url + "?jsoncallback=?",      // Don't forget to put in the 'jsoncallback=' part
        dataType:   'jsonp',        // Make a JSONP request, have it received as text, and interpreted by jQuery as JSON: "jsonp text xml."
        data:       {
                        video_url:  '' + doc.document.location
                    },
        success:    function ( data, textStatus, jqXHR )    // Keep in mind that this is just the request sending success.
                    {
                        if ( data.status === 'SUCCESS' )
                        {
                            var vid_loc = data.url, img_url=data.image_url;
                            if( Object.prototype.toString.call( vid_loc ) === '[object Array]' )    // Check if it's an array
                                vid_loc = data.url[0];
                            if( Object.prototype.toString.call( img_url ) === '[object Array]' )    // Check if it's an array
                                img_url = data.image_url[0];
                            addVideoToVidDiv( data.id, vid_loc, img_url );
                        }
                        else    // Error
                        {
                            //alert ( " Error! Data=" + data.status );
                        }
                        afterMainVid();
                    },  
        error:      function( xhRequest, ErrorText, thrownError )       
                    {
                        Application.console.log( " Can't do because: " + ErrorText + ", " + thrownError );
                        afterMainVid();
                    }
    });
    afterMainVid();
}
如有任何帮助/建议,将不胜感激


好吧,我终于自己弄明白了。这适用于可能遇到相同问题的任何其他人。将数据类型“jsonp”更改为数据类型“json”,就这样!我不知道为什么,但FF似乎不支持来自内部扩展的“jsonp”调用。这里需要注意的一点是,在FF扩展中,您无论如何都不需要“jsonp”,因为扩展可以自由地进行跨域ajax调用。希望这会有所帮助。

您已经完全安装了扩展吗?您不能只执行.xul文件,您必须正确安装它,让Firefox知道您“信任”扩展,然后再让它执行AJAX请求之类的操作。

好的,正如一些Kittens所要求的那样,我正在回答我自己的问题(不知道我可以这么做)

该问题的解决方案是将数据类型:“jsonp”更改为数据类型:“json”

我不知道为什么,但FF似乎不支持来自内部扩展的“jsonp”调用。这里需要注意的一点是,在FF扩展中,您无论如何都不需要“jsonp”,因为扩展可以自由地进行跨域ajax调用。希望这会有所帮助


我也在问题本身中提供了答案。

嗨,克里斯托夫,谢谢你的回答。是的,我已经安装好了。我不知道什么是信任(我对扩展开发非常陌生),但我已经安装了它。我在工具栏上增加了一个菜单项,这就是我执行它的地方。如果你已经弄明白了,为什么不回答你自己的问题呢?