首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在jQuery.getJSON()执行其操作之前拦截和修改JSON字符串

在jQuery.getJSON()执行其操作之前拦截和修改JSON字符串
EN

Stack Overflow用户
提问于 2016-01-07 19:35:11
回答 1查看 498关注 0票数 0

我使用jQuery的getJSON调用从名为my.json的文件中重新获取内容。

现在,有时JSON文件包含某个字符,这将使语法无效。不幸的是,我没有能力改变这一点。

我认为在$.getJSON()读取JSON字符串并添加它之前,使用success来截取它并添加它会很容易,因为语法是无效的。显然,这并不像我想的那么容易。

如果有人能帮我修复下面的代码,我将不胜感激。

代码语言:javascript
运行
复制
$.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.
});
EN

回答 1

Stack Overflow用户

发布于 2016-01-07 19:45:05

您可以使用$.ajax()success回调函数对返回的数据进行必要的检查。不过,这需要您将dataType设置为text,这样jQuery就不会尝试自动为您解析它。试试这个:

代码语言:javascript
运行
复制
$.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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34654139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档