Как я могу отправить объект JSON из скрипта Python в jQuery?

Я просмотрел 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

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


person Parker    schedule 30.11.2010    source источник


Ответы (2)


В вашем случае вы заключили ответ 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))
person Philar    schedule 30.11.2010
comment
Нет проблем, но нам нужно правильно структурировать JSON-данные ответа. Предположим, что и Price, и Cost являются простыми ключами в словаре Python, при отправке клиенту доступ к ним можно получить с помощью data.Price и data.Cost соответственно. - person Philar; 30.11.2010

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

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

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

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

person ma11hew28    schedule 30.11.2010
comment
Спасибо, Мэтт! Я получил скрипт, возвращающий правильный объект JSON. И да, он динамический, поэтому я не могу его жестко закодировать. Единственная проблема сейчас в том, что я не знаю, как получить доступ к сохраненным значениям, так как data.Price не работает - person Parker; 30.11.2010