[英]How to send a POST request with JavaScript XMLlhttpRequest to Google App Engine?
我想將JavaScript XMLlhttpRequest發送到Google App Engine上的.py腳本。 但我不是在尋找jQuery
解決方案
HTML:
<form action="javascript:sendMessage();">
<b>User:</b>
<input value="" name="user" id="user">
<br>
<b>Comment here:</b>
<div>
<textarea id="message" name="message" rows="3" cols="60"></textarea>
</div>
<input type="submit">
</form>
<div id="result"></div>
JavaScript:
<script type="text/javascript" language="javascript">
var url = window.location.href;
var element_id = "my_first_element";
function sendMessage() {
console.log("working?");
var xhr;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById('result').innerHTML =
"status: " + xhr.status +
"<br />statusText: " + xhr.statusText +
"<br />server response: <br />" + xhr.responseText;
}
}
xhr.open("POST", "communication.py", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("url=" + encodeURI(url) +
"&user=" + encodeURI(document.getElementById('user').innerHTML) +
"&message=" + encodeURI(document.getElementById('message').innerHTML) +
"&element_id=" + encodeURI(element_id)
);
}
</script>
Google App Engine(腳本文件稱為communication.py,位於我的GAE應用程序的主目錄中):
class CommentsService(webapp2.RequestHandler):
"""This Handler is responsible for the Commenting Service"""
def post(self):
comment = Comments()
user = cgi.escape(self.request.get('user'))
message = cgi.escape(self.request.get('message'))
comment.url_ = cgi.escape(self.request.get('url'))
comment.user_ = cgi.escape(self.request.get('user'))
#comment.date = cgi.escape(self.request.get('date'))
comment.message = cgi.escape(self.request.get('message'))
comment.element_id = cgi.escape(self.request.get('element_id'))
comment.put()
self.response.out.write("input1: %s<br />input2: %s" % (user, message))
app.yaml
application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /stylesheets
static_dir: stylesheets
- url: /.*
script: myapp.application
libraries:
- name: webapp2
version: latest
- name: jinja2
version: latest
我在控制台中收到錯誤消息:
POST http://myapp.appspot.com/communication.py 404(未找到)
因此,我認為找到communication.py存在一些問題
為什么找不到該文件的任何想法?
總結一下格雷格已經提出的建議:
更改app.yaml中的處理程序:
handlers:
- url: /stylesheets
static_dir: stylesheets
- url: /communication
script: app.communication
- url: /.*
script: myapp.application
communication.py中的更改:
class CommentsService(webapp2.RequestHandler):
"""This Handler is responsible for the Commenting Service"""
def post(self):
comment = Comments()
user = cgi.escape(self.request.get('user'))
message = cgi.escape(self.request.get('message'))
comment.url_ = cgi.escape(self.request.get('url'))
comment.user_ = user
#comment.date = cgi.escape(self.request.get('date'))
comment.message = message
comment.element_id = cgi.escape(self.request.get('element_id'))
comment.put()
self.response.out.write("input1: %s<br />input2: %s" % (user, message))
app = webapp2.WSGIApplication([('/communication', CommentsService)],
debug=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.