$.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吗?
答案 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;
看到这个答案: