【问题标题】:how to return message to ajax?如何将消息返回给ajax?
【发布时间】:2010-12-01 05:40:34
【问题描述】:

我的 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",) 是瓶子支持吗?

【问题讨论】:

  • 你从哪里复制的?大多数 Python 行没有任何意义......
  • NameError 是因为您没有定义 XMLHttpRequest,您可能需要从某个地方导入它。另外,我的猜测是 XMLHttpRequest 是一个类,如果是这样,您可能想使用 'isinstance(request.POST, XMLHttpRequest)' 而不是 '==' 比较。

标签: python ajax bottle


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-17
        • 2011-08-18
        • 2013-11-21
        • 2013-10-28
        • 2019-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多