Следующий код не работает, потому что когда я пытаюсь получить «chooser» в Google App Engine (Python), он не определен:
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
, чтобы уточнить, что именно выбирает"согласно комментарию Даниэля Роземана:
В обработчике /choice
у меня есть writeToStorage()
, который присваивает имя пользователя в форме user1, user2
и т. д. и записывает это в localStorage
.
После записи имени пользователя в localStorage
Мне также нужно записать его в базу данных в приложении, и я использую xhr
для отправки его в обработчик /g/choicehandler
.
Итак, "chooser", яПоверьте, это строка, сделанная из
var user = "user" + count;
Я копирую /choice
обработчик ниже:
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>""")
ОБНОВЛЕНИЕ 2
Я заметил влоги о том, что текст из textarea, который является «choice» и «chooser», который отправляется с 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()
, поэтому в хранилище данных я вижу «chooser» и «choice», написанные в 2 разных строках.Что я делаю неправильно?