仅firefox中存在JSON语法错误
JSON syntax error in firefox only
使用$.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对象
在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()
’ed的对象就是这个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') {
}
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 未捕获的语法错误:意外的标记{
- "未捕获的语法错误:意外的标记}"
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- $(input[]).仅在firefox中出现每个抛出语法错误
- 为什么浏览器没有为语法错误抛出异常
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获的语法错误:意外的令牌,
- jQuery.getJSON失败,语法错误
- "未捕获的语法错误:意外的标记"角度JS
- 参数列表Three.js之后的未捕获语法错误:缺少)
- 循环的Javascript冻结浏览器,没有语法错误
- 为什么匿名函数本身就是javascript中的语法错误
- 这怎么不是语法错误?这毫无意义!(javascript)
- 语法错误:缺少:在属性 ID 之后
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]