如何将消息返回给AJAX?

1 投票
3 回答
1635 浏览
提问于 2025-04-16 07:50

我的 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

撰写回答