다음은 최대 my other question입니다. 이 질문은 Google App Engine 질문보다 javascript 질문이 더 많으므로 다시 묻습니다.텍스트 영역의 가치를 얻으려면 어떻게해야합니까?
나는 내가이 textarea
의 값을 가지고 formData
와 응용 프로그램에 보낼 형태를
<form name="choice_form" id="choice_form" method="post" action="/g/choicehandler" onsubmit="writeToStorage()">
<textarea name="choice" rows="7" cols="50"></textarea><br />
<input type="submit" value="submit your choice">
</form>
있습니다. 나는 이것을 시도했다
var choice = document.getElementById("choice_form").value;
그러나 나는 "선택"의 값으로 "undefined"를 얻는다. 내가 도대체 뭘 잘못하고있는 겁니까?
또한 올바르게 이해하면 /g/choicehandler
은 양식에서 한 번, XHR에서 한 번 두 번 호출됩니다. 어떻게 수정해야합니까?
이 솔루션 Aaron Dufour's answer 참조
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 choice = document.getElementById("choice_form").value;
var formData = new FormData();
formData.append("chooser", user);
formData.append("choice", choice);
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);
//added this per Aaron Dufour's answer
return 0;
};
</script>
</head>
<body>
//changed onsubmit like this: onsubmit="return writeToStorage(); as per Aaron Dufour's answer
<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 : 다음은 핸들러입니다.
감사합니다. 이것은 처음으로 테스트 해 보았습니다. 그러나 두 번째와 세 번째로 모든 가치는 다시 결석했습니다. 내가 도대체 뭘 잘못하고있는 겁니까? – Zeynel
또한 로그에서 xhr 및 양식 데이터를 볼 수 있습니다. – Zeynel
@Zeynel 잘 모르겠습니다. 범인이 될 수있는 코드로 업데이트 할 수 있습니까? 새로운 페이지를 갖기 위해 열심히 새로 고침하십시오. –