0

我正在尝试制作一个将列出页面上所有视频的 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();
}

任何帮助/指针将不胜感激。

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

4

2 回答 2

0

好的,正如 SomeKittens 所要求的,我正在回答我自己的问题(不知道我能做到这一点)。

解决问题的方法是将dataType:'jsonp',改为dataType:'json'。

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

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

于 2012-08-01T04:52:52.547 回答
0

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

于 2012-07-23T08:06:44.400 回答