Как я могу отправить объект JSON из скрипта Python в jQuery? - PullRequest
5 голосов
/ 30 ноября 2010

Я просмотрел API и всевозможные ресурсы, но я не могу понять, как извлечь объект JSON из скрипта Python с использованием AJAX. Я уверен, что проблема в том, как я имею дело с объектом JSON.

Во-первых, в скрипте python на моем сервере я генерирую и печатаю массив JSON

import json
print "Content-type: application/json"
print 
print json.dumps(['Price',{'Cost':'99'}])

Затем в отдельном html-файле я пытаюсь что-то вроде

<body>
<div id="test">
</div>

<script>
 $(document).ready(function() {
  $.getJSON("http://www.example.com/cgi-bin/makeJSON.py", function(data) {
        $('#test').html("JSON Data: " + data.Price);
    });
});
</script>
</body>

Но я ничего не понимаю. Я уверен, что data.Price не так, но я также уверен, что должен что-то делать, а не просто печатать результаты json.dumps

Любая помощь приветствуется! Заранее спасибо, и извините, если это очевидный вопрос.

Ответы [ 2 ]

7 голосов
/ 30 ноября 2010

В вашем случае вы вложили ответ JSON в array. Для доступа к цене вам необходимо получить доступ data[0]. Вам необходимо правильно структурировать данные JSON.

Следующие изменения в вашем скрипте Python должны позволить вам получить доступ к data.Price. Дайте мне знать, если у вас все еще есть проблемы.

   import json
   print "Content-type: application/json"
   print 
   response={'Price':54,'Cost':'99'}
   print(json.JSONEncoder().encode(response))
1 голос
/ 30 ноября 2010

Пожалуйста, предоставьте больше контекста тому, что вы пытаетесь сделать. Можете ли вы просто жестко закодировать объект JSON в HTML? Или вы пытаетесь сделать что-то более динамичное, например, AJAX?

В первом случае просмотрите исходный HTML-код страницы, которую генерирует Python. Это должно выглядеть примерно так:

<script type="text/javascript">
   var MY_GLOBAL_JSON_OBJECT = { ... };
</script>

Или вы могли бы просто выплюнуть объект JSON внутри функции, которая фактически использует его, вместо того, чтобы назначать его сначала глобальной переменной.

...