次のコードは、私はGoogle App Engineの(パイソン)で「チュー」を取得しようとすると、それが定義されていないので、動作していないよう:は私がローカルホストとSDKにはXMLHttpRequestを()テストすることができますか?
chooser = self.request.get("chooser")
self.response.out.write("chooser: %s " % chooser)
#returns "chooser:" without any value
は、この有効なJavaScriptですか?
var formData = new FormData();
formData.append("chooser", user);
var xhr = new XMLHttpRequest();
//is it ok to test this with localhost?
xhr.open("POST", "http://localhost:8086/g/choicehandler", true);
xhr.onreadystatechange = function (aEvt) {
if (xhr.readyState == 4 && xhr.status == 200){
console.log("request 200-OK");
}
else {
console.log("connection error");
}
};
xhr.send(formData);
XHRコールやアプリケーションに問題はありますか?
私は「チュー」はダニエル・ローズマンさんのコメントのとおりであるものを明確にするために/choice
内のコードを含めています
UPDATE:私は形式でユーザ名を割り当てwriteToStorage()
を持って
ハンドラ/choice
でuser1, user2
とそれで、それをlocalStorage
に書いてください。
ユーザー名をlocalStorage
に書き込んだ後、アプリケーションのデータベースに書き込む必要があります。xhr
を使用して、/g/choicehandler
ハンドラに送信します。私が気づいた2
class Choice(webapp.RequestHandler):
def get(self):
self.response.out.write("""
<html>
<head>
<script type="text/javascript">
var count = 0;
function writeToStorage()
{
var user = "user" + count;
count++;
localStorage.setItem("chooser", user);
var formData = new FormData();
formData.append("chooser", user);
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:8086/g/choicehandler", true);
xhr.onreadystatechange = function (aEvt) {
if (xhr.readyState == 4 && xhr.status == 200){
console.log("request 200-OK");
}
else {
console.log("connection error");
}
};
xhr.send(formData);
};
</script>
</head>
<body>
<form name="choice_form" id="choice_form" action="/g/choicehandler" method="post" onsubmit="writeToStorage()">
<textarea name="choice" rows="7" cols="50"></textarea><br />
<input type="submit" value="submit your choice">
</form>
</body>
</html>""")
UPDATE:
ので、 "チュー"、私は信じている文字列は、私は/choice
ハンドラの下にコピーし
var user = "user" + count;
で作られていますXHRで送信される「選択」と「チュー」でテキストエリアからのテキストが一緒に示されていないログ、そのうちの一つが値なしで常に:
INFO ... chooser: user0 choice:
INFO ... chooser: choice: abcd
INFO ... chooser: user0 choice:
INFO ... chooser: choice: efgh
これは、上記のログ用のコードです:
chooser = self.request.get("chooser")
choice = self.request.get("choice")
logging.info("chooser: %s choice: %s" % tuple([chooser, choice]))
new_choice = User(
choice = choice,
owner = chooser)
new_choice.put()
ので、データストアに、私は「チュー」と2つの異なる行に書かれた「選択」を参照してください。私は間違って何をしていますか?
それは、このスクリプトを使用して、ページ限りOKですまた、ローカルホストから提供されては:「チュー」をすることになっている何8086 –
? –
'user'はあなたのjavascriptの値を持っていますか?テストのために文字列リテラルに置き換えようとしましたか?@DanielRoseman; –