2

フォームを作成し、送信ボタンをクリックすると、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」の情報を読み取って、GoogleAppEngineに書き込もうとしています。

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テキストの検証に便利です。)

私はPythonの頭ではありませんが(実際、私はPythonの頭ではありません)、置き換えたいと思います

self.response.out.write(info)

json.dump(info, self.response)

..または同様のもの(上記は、この参照に基づいてself.response「... aを.write()サポートするファイルのようなオブジェクト...」であると想定しています) 。

于 2012-03-20T16:43:14.777 に答える