JQuery: JSON превращается из объекта в строку? - PullRequest
0 голосов
/ 21 июня 2010

Я использую плагин 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))

Ответы [ 2 ]

0 голосов
/ 21 июня 2010

Чтобы добавить к ответ Игнасио , вы можете исправить свой код на стороне сервера, чтобы использовать это:

result = {'course': dict_course, 'analysis': analysis, 'graph': json.loads(jit_graph_data)}
self.response.out.write(json.dumps(result))
0 голосов
/ 21 июня 2010

Единственный способ получить этот вывод - если jit_graph_data уже был JSON, либо потому, что он был закодирован где-то ранее в канале, либо потому, что он никогда не декодировался при извлечении из источника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...