如何从Python脚本向jQuery发送JSON对象?

6 投票
2 回答
16555 浏览
提问于 2025-04-16 07:49

我查阅了很多API和各种资源,但就是搞不懂怎么用AJAX从Python脚本中获取一个JSON对象。我觉得问题出在我处理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 个回答

1

请提供更多信息,告诉我你想做什么。你是想把JSON对象直接写死在HTML里吗?还是想做一些更灵活的事情,比如使用AJAX?

如果是前者,你可以查看Python生成的页面的HTML源代码。它应该看起来像这样:

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

或者,你也可以直接在使用这个JSON对象的函数里面输出它,而不是先把它赋值给一个全局变量。

9

在你的情况下,你把JSON的响应放在了一个数组里。要获取价格,你需要访问data[0]。你需要正确地组织你的JSON数据。

下面对你的Python脚本做的修改应该能让你访问到data.Price。如果你还有其他问题,随时告诉我。

   import json
   print "Content-type: application/json"
   print 
   response={'Price':54,'Cost':'99'}
   print(json.JSONEncoder().encode(response))

撰写回答