2010-06-21 3 views
0

Я использую плагин Ajax Form JQuery, чтобы получить JSON от сервера: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)) 
+0

Ваш код сервера выглядит как что? –

ответ

0

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

0

Чтобы добавить Ignacio's answer, вы можете исправить код на стороне сервера, чтобы использовать это:

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

О, я не прочитал полный вопрос, и вы его уже исправили? Ну, я оставлю это здесь в любом случае ... – icktoofay

Смежные вопросы