удаление символа `u` в выводе Python - PullRequest
2 голосов
/ 20 марта 2012

Я создаю форму, и когда я нажимаю кнопку отправки, я присваиваю значение 3 в javascript dict и отправляю его в скрипт python для обработки, однако Мой веб-браузер сообщает мне об ошибке!

изОшибка 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)

Ответы [ 2 ]

8 голосов
/ 20 марта 2012

Печать Python dict во многих случаях не будет генерировать допустимый JSON. Вы хотите модуль json:

import json

# ... snip ...

self.response.out.write(json.dumps(info))
# or
json.dump(info, self.response.out)
3 голосов
/ 20 марта 2012

Проблема не в 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 является "... a .write() -поддерживающим файловый объект ..." ), на основе этой ссылки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...