Я пытаюсь выдать имя пользователя каждому новому пользователю в форме user1, user2, user3 и т. Д.
В результате моего предыдущего вопроса , теперь я понимаю, что мне нужно отслеживать количество в приложении, а не в браузере. Поэтому я создал /counthandler
(я работаю с Google App Engine Python):
class CountHandler(webapp.RequestHandler):
def get(self):
count = count + 1
В /choice
у меня есть этот скрипт:
function writeToStorage()
{
var user = "user" + count;
localStorage.setItem("chooser", user);
document.getElementById("form_chooser").value = user;
};
Как мне получить "счет" от /counthandler
до writeToStorage
? Я понимаю, что мне нужно использовать HMLHttpRequest, но не знаю, как это сделать. Спасибо.
UPDATE
В ответ на комментарий jfriend00 я добавлю более конкретный вопрос о вызове ajax:
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:8086/counthandler", true);
xhr.onreadystatechange = function (aEvt) {
if (xhr.readyState == 4 && xhr.status == 200){
console.log("request 200-OK");
}
else {
console.log("connection error");
}
};
//I am not sure what to put in send()?
xhr.send();
ОБНОВЛЕНИЕ 2
В ответ на комментарий jfriend00 и предоставленную ссылку я изменил вызов на GET; но не уверен, что произойдет после этого:
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://localhost:8086/counthandler", true);
xhr.onreadystatechange = function (aEvt) {
if (xhr.readyState == 4 && xhr.status == 200){
console.log("request 200-OK");
}
else {
console.log("connection error");
}
};
//changed this to "null". this now opens the connection.
//what do I do after this?
xhr.send(null);
Обновление для ответа на обновленный ответ jfriend00:
Спасибо за подробное объяснение. Теперь я понимаю. Но есть еще кое-что, чего мне не хватает. Получить значение количества легко:
query = Count.all()
query.get()
count = e.count
logging.info("count = %s" % count)
# gives count = 12
Теперь вы говорите, что присвойте значение переменной Python "count", равное 12, переменной js "count" с помощью
<script type="text/javascript">
var count = 12;
</script>
Что я не понимаю, так это то, что произойдет в следующий раз, когда счет = 13?
Мне кажется, что
<script type="text/javascript">
var count = count;
</script>
не будет работать. Правильный? Чего мне не хватает?
Еще раз спасибо.
Обновление, чтобы попробовать второй вариант в ответе jfriend00. Похоже, мне нужно включить функцию успеха, чтобы получить переменную "count", отправляемую /counthandler
:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && xhr.status == 200)
{
//get "count" sent by /counthandler?
//var count = count;
}
};
xhr.open("POST", "http://localhost:8086/counthandler", true);
xhr.send(null);
Но я все еще не понимаю, как /counthandler
отправляет «счет» и как я могу получить его внутри функции успеха.