Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 XMLHttpRequest for JSON文件在Chrome中工作得很好,但在Firefox中却不行_Javascript_Json_Firefox_Google Chrome_Userscripts - Fatal编程技术网

Javascript XMLHttpRequest for JSON文件在Chrome中工作得很好,但在Firefox中却不行

Javascript XMLHttpRequest for JSON文件在Chrome中工作得很好,但在Firefox中却不行,javascript,json,firefox,google-chrome,userscripts,Javascript,Json,Firefox,Google Chrome,Userscripts,我已将问题范围缩小到下面的函数。这是我正在编写的用户脚本的一部分。它在Chrome中工作得非常好,但在Firefox/Greasemonkey中根本不起作用。我一整天都在摆弄它,结果碰上了一堵砖墙。唯一有意义的是如果JSON.parse工作不正常,这是有意义的,因为众所周知Chrome处理JSON.parse的方式有些不同。。。但我知道JSON的格式是完美的 function getTagline() { var jsonfile = new XMLHttpRequest();

我已将问题范围缩小到下面的函数。这是我正在编写的用户脚本的一部分。它在Chrome中工作得非常好,但在Firefox/Greasemonkey中根本不起作用。我一整天都在摆弄它,结果碰上了一堵砖墙。唯一有意义的是如果JSON.parse工作不正常,这是有意义的,因为众所周知Chrome处理JSON.parse的方式有些不同。。。但我知道JSON的格式是完美的

function getTagline() {
    var jsonfile = new XMLHttpRequest();
    jsonfile.open("GET", "http://example.com/somegood.json", true);
    jsonfile.onreadystatechange = function() {
        if (jsonfile.readyState == 4) {
            if (jsonfile.status == 200) {
                var taglines = JSON.parse(jsonfile.responseText);
                var choose = Math.floor(Math.random() * taglines.length);
                var tagline = document.createTextNode(taglines[choose].metais);
                insertTagline(tagline);
            }
        }
    };
    jsonfile.send(null);
}

有什么想法吗?

有人告诉我,如果没有额外的库,就不支持JSON,请参阅公认的答案。我也试过这个

try {
    clientList = JSON.parse(responseText);
} catch (e) {
    alert(e.message);
}

我得到的信息是“JSON未定义”。因此,答案似乎是正确的。

经过更多的故障排除,原来是跨域XHR问题。它在Chrome中工作,因为默认情况下,Chrome允许在所有域上使用该脚本。我调整了标题,使Chrome知道只允许正确的域,但Firefox不允许XHR上的跨域。这是通过简单地切换到GM_xmlhttpRequest来解决的,它允许Firefox中的跨域,谢天谢地,Chrome也支持它


谢谢你们的帮助,伙计们

您可以发布您试图解析的JSON的一部分吗?以下是一个示例:[{“commenturl”:[“/107669/Solutionism是新的乐观主义”#3934686“],“metais”:[“Metafilter:休息了一天,坐在地下室,在黑暗中,根本没有任何反应],“user”:[“不可思议的亨格曼”],{“commenturl”:[“/107126/Lancelot Link Secret Chimp#3905976”],“metais”:[“Metafilter:他们不是猴子,他们是书呆子。”],“user”:[“Daddy-O”],{“commenturl”:[“/107129/我的工作是看着梦想消亡#3906426”],“metais”:[“Metafilter:大多数可怕的人躲在好链接后面”],“user”:[“屁股的隐隐”]因此,这是一个对象列表。根据JSON.org,它应该是有效的。我认为…:PWorks对我来说很好,但必须避开Firebug(\')中的单引号。那个脚本到达JSON.parse行了吗?如果是,那个调用会抛出,如果是,会出现什么异常?谢谢!我明天会尝试一下。让我觉得它是受支持的,不过…我会在尝试后再次评论。嗯,看起来不是这样的…切换到使用eval进行测试。它在Chrome中仍然可以正常工作,使用eval,b但在Firefox中是不行的。