GetJSON在Opera中工作吗?

时间:2011-04-25 05:16:27

标签: jquery

$.getJSON('http://www.thesite.net/api.php', function(data) {
    if (data.status != 401)
    {
        if (data.messages == 0)
        {
            $('#messages').html('No New Messages');
        }
        else
        {
            $('#messages').html(data.messages + ' new messages. <a href="javascript:go_to_messages();">Check</a>');
        }
        $('#currency').html(data.cashfmt + '  Bux');
    }
    else
    {
        $('#container').html('You are not logged into the site. Please <a href="javascript:go_to_login();">login</a>.');
    }
});

这是我的代码,只做了一些小修改。它被HTML文档中的标记包围。它将用于扩展。当我进行扩展并使用它时,它在Chrome中完美运行但在Opera中的同一文档中,我已多次检查,这是问题的原因。该页面在运行后仍未编辑。页面的其余部分非常简单,只有很少的JS。没有特定于Chrome的方法。出于某种原因,这在Opera中不起作用。我尝试添加一行来检查它是否只是忽略了ifs,但我发现它甚至忽略了第一行之后放置的行(当我这样做时它在Chrome中完美运行)Opera不接受getJSON吗?

1 个答案:

答案 0 :(得分:0)

  

GetJSON在Opera中工作吗?

如果您需要共享Cookie,请将此行添加到您的扩展程序config.xml

<feature name="opera:share-cookies" required="true"/>

同样在您的扩展程序config.xml中,您需要指定要访问的域的访问来源。

出于测试目的,您可以暂时使用:

<access origin="*"/>

但是,你应该更明确,应该使用它:

<access origin="http://thesite.net/" subdomains="true"/>
<access origin="https://thesite.net/" subdomains="true"/>

jQuery解决方案1:

使用JSONP。

$.getJSON("http://www.thesite.net/api.php?callback=?", function (data)
{
    ...
});

文档链接:

http://api.jquery.com/jQuery.getJSON/#jsonp

jQuery解决方案2:

从jQuery 1.5开始,你必须强制跨站点脚本。

$.support.cors = true;

jQuery.support.cors = true;

看到这个答案:

jQuery Call to WebService returns "No Transport" error