2

我创建了一个表单,当我单击提交按钮时,我将 3 值分配给一个 javascript dict 并将其发送到 python 脚本进行处理,但是我的网络浏览器告诉我一个错误!

来自 Json 错误:{u'food': 90, u'cargo': 70, u'fuel': 50} SyntaxError

控制器.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”的信息并将其写入谷歌应用引擎。

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)
4

2 回答 2

8

在许多情况下,打印 Python dict 不会生成有效的 JSON。你想要的json模块:

import json

# ... snip ...

self.response.out.write(json.dumps(info))
# or
json.dump(info, self.response.out)
于 2012-03-20T16:46:40.173 回答
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()支持文件的对象...”),基于此参考

于 2012-03-20T16:43:14.777 回答