在jQuery.getJSON()执行操作之前拦截并修改JSON字符串
Intercept and modify JSON string before jQuery.getJSON() does its thing
我使用jQuery的getJSON
调用从名为my.json
的文件中重新获取内容。
现在,有时JSON文件包含某个字符,这会使语法无效。不幸的是,我无法改变这一点。
我认为在$.getJSON()读取JSON字符串并由于语法无效而失败之前,使用success
来拦截JSON字符串并对其进行dix会很容易。显然,这并不像我想的那么容易。
如果有人能帮我修复下面的代码,我将不胜感激。
$.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.
});
您可以使用$.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。
相关文章:
- 使用Regex修改字符串
- 修改表单提交字符串
- 如何以良好的性能更新修改后的字符串
- Javascript-修改函数或从字符串中计算函数
- JS中的字符串修改问题
- 修改字符串末尾的整数
- 遍历 Javascript 正则表达式匹配以修改原始字符串
- Javascript + 修改字符串
- Javascript:修改字符串's[[PrimitiveValue]]使用“;这个“;
- 如何修改字符串,使Javascript中的每个字符之间只有一个空格
- 修改字符串中的for循环
- 通过替换来修改字符串
- 使用javascript修改字符串路径
- 使用javascript修改字符串
- 修改字符串数组,使其在targeting中用作id
- 使用.split()取出并修改字符串的某些部分,以不同的方式修改和显示它们
- 在JavaScript中修改字符串
- 如何修改字符串内部字符,Javascript正则表达式
- 如何在NodeJS中拆分和修改字符串
- 闭包编译器正在修改字符串中的尾括号