我创建了一个表单,当我单击提交按钮时,我将3值分配到javascript dict并将其发送到python脚本进行处理但是我的Web浏览器告诉我错误!
来自Json错误:{u'food':90,u'cargo':70,u'fuel':50} SyntaxError
controller.js
function customiseCtrl($xhr){
var self = this;
checkPoint();
this.process = function(){
if (checkPoint()){
var newPlayer = {"fuel":value, "food":value2, "cargo":value3 };
$xhr('POST', '/process', newPlayer, function (code, response) {
self.x = response;
});
}
};
}
/ process - > python脚本(我正在尝试阅读“info”的信息并将其写入Google应用引擎。
def post(self):
user = users.get_current_user()
player = Player();
info = json.loads(self.request.body)
player.fuel = info.fuel
self.response.out.write(info)
答案 0 :(得分:8)
在许多情况下,打印Python dict不会生成有效的JSON。你想要json
模块:
import json
# ... snip ...
self.response.out.write(json.dumps(info))
# or
json.dump(info, self.response.out)
答案 1 :(得分:3)
问题不在JavaScript中(根据您的原始标题),它位于JSON的输出中。您需要输出格式正确的JSON,如果它看起来像{u'food': 90, u'cargo': 70, u'fuel': 50}
,self.response.out.write(info)
没有。 (jsonlint.com对于验证JSON文本非常方便。)
我不是一个蟒蛇头(实际上,我根本不是一个蟒蛇头),但我想你要替换
self.response.out.write(info)
与
json.dump(info, self.response)
..或类似(以上假设self.response
是“... .write()
- 支持类文件对象...”),基于this reference