有人必须能够解释我在这里做错了什么!我正在尝试为Google App Engine应用程序创建一个最简单的AJAX帖子示例...而且我失败了!
这是app python
import cgi
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from django.utils import simplejson
class EmailItem(db.Model):
email = db.StringProperty(multiline=False)
date = db.DateTimeProperty(auto_now_add=True)
class EmailList(webapp.RequestHandler):
def get(self):
self.response.out.write("You see nothing!")
def post(self):
eitem = EmailItem()
eitem.email = self.request.get("address")
eitem.put()
self.response.out.write("success")
application = webapp.WSGIApplication([('/', EmailList)])
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
这是jQuery
$.ajax({
type: "POST",
url: "myappengineURL",
data: "address=" + sVerifiedEmail,
success: function(msg) {
alert("Data Saved: " + msg);
},
});
假设我实际上知道如何使用jQuery并调用该AJAX调用...为什么我一直收到405错误?
我已经用这六种不同的方式重写了这个东西,试图让它发挥作用......我做不到!到目前为止,我正在查看来自http://blog.pythoughts.com/posts/AJAX-with-Google-App-Engine#jqueryAjax和Google代码的AJAX RPC文章的建议,我无法发布链接,因为StackOverflow说NO NO NO。这些例子似乎都不适合我。
我做错了什么?
答案 0 :(得分:5)
您的问题被称为“同源政策”。这就是您在日志中看到OPTIONS方法的原因。您的Ajax请求的域和协议必须与您从其发起的域和协议相同。
答案 1 :(得分:3)
我已将jQuery合并到Google App Engine AJAX example中。用以下内容替换他们的doAdd()和自定义AJAX javascript:
<script language="javascript" src="./static/jquery.js"></script>
<script language="javascript" src="./static/json2.js"></script>
<script language="javascript">
function doAdd()
// Requests server to add two numbers, loads server response to result
{
$.get(
'/rpc',
{"action" : "Add",
"arg0" : JSON.stringify($("#num1").val()),
"arg1" : JSON.stringify($("#num2").val())},
function(response) { $('#result').val(JSON.parse(response)); }
);
}
</script>
适合我!希望它有所帮助。
答案 2 :(得分:0)
$.ajax({
type: "POST",
url: "myappengineURL",
data: ({address : sVerifiedEmail}),
success: function(msg) {
alert("Data Saved: " + msg);
},
});
如上所述构建通话时会发生什么?
答案 3 :(得分:0)
答案 4 :(得分:0)
而不是: application = webapp.WSGIApplication([('/',EmailList)])
尝试: application = webapp.WSGIApplication([('。*',EmailList)])
另外,JS中的数据参数不是字典吗?喜欢: var data = {'email':$ F('email_field_name')}
答案 5 :(得分:-1)
所有其他答案都很愚蠢。
你想发帖而不是获取。应该说:
class EmailList(webapp.RequestHandler):
def post(self):
self.response.out.write("You see nothing!")