仅在firefox中出现JSON语法错误

我在使用$.parseJSON()时在FireFox中遇到语法错误。 相同的代码在Chrome / Chromium和Safari上正常运行。

我调用此函数来获取随机生成的令牌。

 function getToken() { var url = "/csrf_token_generate"; $.ajax({ url: url, method: "GET" }).done(function(data) { console.log(data); // Logs the data from the call var json = $.parseJSON(data); // Where the error occurs token = json.token; console.log(token); }); } 

URL /csrf_token_genrate返回类似于{"token":"$2y$10$jcr.P3FNqeji6RqD93LnxeIKs9gYNiPj7cboahz8RCCSgKw7VOfhi"}的JSON对象{"token":"$2y$10$jcr.P3FNqeji6RqD93LnxeIKs9gYNiPj7cboahz8RCCSgKw7VOfhi"}

在URL中,我将Content-Type设置为application/json ,它适用于所有其他浏览器。

我得到的错误就是这个

 SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data n.parseJSON() jquery.min.js:4 getToken/<() wheel.bak.js:94 n.Callbacks/j() jquery.min.js:2 n.Callbacks/k.fireWith() jquery.min.js:2 x() jquery.min.js:4 .send/b/<() jquery.min.js:4 

正在调用console.log()Object { token: "$2y$10$60vxSZiVqushBLVHSR5jPO6MquD4…" }就是这个Object { token: "$2y$10$60vxSZiVqushBLVHSR5jPO6MquD4…" }

我似乎无法追踪为什么它不能只在FireFox中工作,但在其他浏览器中工作正常。

更新1

我发现firefox试图解析一个已经解析过的对象,所以我把代码更改为了这个

 function getToken() { var url = "/csrf_token_generate"; $.ajax({ url: url, method: "GET" }).done(function(data) { var json = data; token = json.token; console.log(token); }); } 

现在哪个适用于Firefox,但不适用于Chromium。

那有什么可做的呢?

我认为您应该检查Response Headers – > Content-Type以查找实际的Data Type 。 兼容代码应该是这样的。

 # for chrome if(typeof data === 'string') { } #for firefox if(typeof data === 'object') { }