簡體   English   中英

jQuery:JSON從對象轉換為字符串?

[英]jQuery: JSON getting converted from an object to a string?

我正在使用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))

獲得該輸出的唯一方法是,如果jit_graph_data已經是JSON,要么是因為它在管道中的某個較早位置進行了編碼,要么是因為從源中提取時從未對其進行解碼。

要添加到Ignacio的答案中 ,您可以修復服務器端代碼以使用此代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM