【问题标题】:jQuery: JSON getting converted from an object to a string?jQuery:JSON 从对象转换为字符串?
【发布时间】:2010-06-21 04:34:40
【问题描述】:

我正在使用 Ajax Form jQuery 插件从服务器获取 JSON:

/**
 * Helper function for the jQuery AJAX form plugin.
 */
function bindOnSuccess(form, callback) {
    form.ajaxForm({
        dataType: 'json',
        success: function (response, status, xhr, $form) {
            callback(response);
        }
    });
}

用法:

bindOnSuccess($('#course-search'), function(response) {
    if (!response) {
        $("#system-status").text("Sorry, no course could be found for that search.");
    }
    else {
        $(".dept-code").text(response['course']['_dept_code']);
        $(".course-number").text(response['course']['_number']);
        $(".course-title").text(response['course']['_title']);

        $("#div-unparsed-pre-reqs").show();
        $("#unparsed-pre-reqs-teaser").show();
        $("#unparsed-pre-reqs").text(response['course']['_unparsed_pre_reqs']).hide();

        $("#td-required-for").text(response['analysis']['cRequiredFor']);

        loadNewJson(response['graph']);
    }
});

JSON 已正确评估。然而,其中一部分让我感到惊讶:

{"course": { 'foo': 'bar', /* data */},
 "analysis": { 'baz': 'odp', /* data */},
 "graph": "[{\"adjacencies\": [], \"id\": 2539, \"name\": \"BEE 3310: Bio-Fluid Mechanics\"}, {\"adjacencies\": [{\"nodeTo\": 2539, \"data\": {\"$direction\": [3332, 2539]}}], \"id\": 3332, \"name\": \"UNKNOWN 9999: UNKNOWN\"}]"}

为什么response['course']response['analysis'] 被解析了,而response['graph'] 仍然是一个字符串?

更新:我刚刚又试了一次,它成功了。我不确定我改变了什么。奇怪。

服务器代码 (Python) 如下所示:

result = {'course': dict_course, 'analysis': analysis, 'graph': jit_graph_data}
self.response.out.write(json.dumps(result))

【问题讨论】:

  • 你的服务器代码是什么样的?

标签: javascript jquery ajax json


【解决方案1】:

获得该输出的唯一方法是jit_graph_data 已经是 JSON,或者因为它在管道中较早的某个位置进行了编码,或者因为从源中提取它时从未解码。

【讨论】:

    【解决方案2】:

    要添加到Ignacio's answer,您可以修复您的服务器端代码以使用它:

    result = {'course': dict_course, 'analysis': analysis, 'graph': json.loads(jit_graph_data)}
    self.response.out.write(json.dumps(result))
    

    【讨论】:

    • 哦,我没有阅读完整的问题,你已经解决了吗?哦,好吧,我还是把它留在这里......
    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2020-05-04
    • 2014-01-14
    • 2011-08-02
    • 2016-06-10
    相关资源
    最近更新 更多