如何从Python脚本向jQuery发送JSON对象?
我查阅了很多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))