如何将消息返回给AJAX?
我的 AJAX 代码:
$.ajax({
type: 'POST',
url: URL + "xyz/" ,
data: {"email": email},
success: function(data) {
alert('hello')
},
dataType: "json",
});
我在 Python 和 Bottle 框架中的处理程序:
def index():
if request.POST == XMLHttpRequest:
email = request.GET.get('email')
response.COOKIES['email'] = email
if check_email(email): //a method written for checking email
return some template
else:
return False //here i want to return some error message to ajax. How to
这样做可以吗?怎么在 AJAX 中捕捉错误?
出现错误:NameError("全局名称 'XMLHttpRequest' 未定义",) 这是否是 Bottle 支持的?
3 个回答
0
只需要返回一个普通的404或500错误响应就可以了。网页浏览器很聪明,它会识别这些错误,并调用你在JavaScript代码中定义的错误处理函数。
对于jQuery来说,我觉得这个错误处理函数是全局的,但我不太确定,因为我对jQuery的了解还不够深。
0
在Python中检查“XmlHttpRequest”是没有意义的。这是一个JavaScript的封装,用来处理浏览器的一些功能,而Python并不知道或不关心这些。
如果你真的需要确认这个POST请求是来自Ajax的,可以查看请求的头信息。jQuery和其他JavaScript框架一样,都会设置一个叫做HTTP_X_REQUESTED_WITH
的头信息。实际上,Bottle的文档中有一个例子正是使用了这个头信息,关于如何访问请求数据。
2
有两件事。首先,我不明白你为什么要检查这是不是一个XMLHTTPRequest?我建议你直接检查一下数据是否通过POST方式发送过来。还有,看起来你是通过POST发送数据,但却试图用GET来获取。你可以试试:
def index():
if request.method == "POST":
email = request.POST['email']
response.COOKIES['email'] = email
if check_login(email):
return some template
else:
return False