1

我的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("global name 'XMLHttpRequest' is not defined",) 是瓶子支持吗?

4

3 回答 3

2

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
于 2010-11-30T21:05:58.000 回答
0

只需返回常规的 404 或 500 响应。Web 浏览器足够聪明,可以知道这一点,并调用 javascript 代码中定义的错误回调。

对于 jQuery,我相信回调是全局的,但我不确定,因为我的 jquery-fu 很弱。

于 2010-11-30T20:49:21.480 回答
0

在 Python 中检查“XmlHttpRequest”是没有意义的。这是一个围绕浏览器功能的 Javascript 包装器,而不是 Python 知道或关心的任何东西。

如果您确实需要检查 POST 是否来自 Ajax,您可以检查请求标头 - jQuery 与其他 JS 框架一样,始终设置HTTP_X_REQUESTED_WITH标头。而且,事实上,有一个示例使用了 Bottle 文档中用于访问请求数据的确切标头。

于 2010-11-30T21:40:34.387 回答