我使用jQuery的getJSON调用从名为my.json的文件中重新获取内容。
现在,有时JSON文件包含某个字符,这将使语法无效。不幸的是,我没有能力改变这一点。
我认为在$.getJSON()读取JSON字符串并添加它之前,使用success来截取它并添加它会很容易,因为语法是无效的。显然,这并不像我想的那么容易。
如果有人能帮我修复下面的代码,我将不胜感激。
$.ajaxSetup({
beforeSend: function(xhr){
if (xhr.overrideMimeType) {
xhr.overrideMimeType("application/json");
}},
cache: false
});
$.getJSON("my.json", function(data){
// Do something with the JSON
console.log("JSON object: " + data);
}).success(function(data, textStatus, jqXHR) {
// Intercept JSON string and modify it.
var fixed_json = fix_json(jqXHR.responseText);
jqXHR.responseText = fixed_json; // Obviously not as simple as I thought.
});发布于 2016-01-07 19:45:05
您可以使用$.ajax()的success回调函数对返回的数据进行必要的检查。不过,这需要您将dataType设置为text,这样jQuery就不会尝试自动为您解析它。试试这个:
$.ajax({
url: "my.json",
dataType: 'text',
success: function(data) {
var obj;
try {
obj = JSON.parse(data);
}
catch(e) {
obj = fix_json(data);
}
// work with the object here...
})
});根据fix_json所做的工作,并假设它总是返回一个对象,您可以直接调用它并删除try/catch。
https://stackoverflow.com/questions/34654139
复制相似问题