как вернуть сообщение в ajax? - PullRequest
1 голос
/ 30 ноября 2010

мой код 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 »не определено»,) бутылка поддерживает его?

Ответы [ 3 ]

2 голосов
/ 01 декабря 2010

2 вещи. Во-первых, я не понимаю, почему вы пытаетесь проверить, является ли это запросом XMLHTTP? Я бы просто проверил, были ли данные отправлены через 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
0 голосов
/ 01 декабря 2010

Нет смысла проверять "XmlHttpRequest" в Python. Это Javascript-оболочка для части функциональности браузера, а не для всего, что знает или заботится Python.

Если вам действительно нужно проверить, что POST исходит от Ajax, вы можете проверить заголовки запроса - jQuery, как и другие JS-фреймворки, всегда устанавливает заголовок HTTP_X_REQUESTED_WITH. И, фактически, есть пример, который использует этот точный заголовок в документации на бутылку для Доступ к данным запроса .

0 голосов
/ 30 ноября 2010

Просто верните обычный ответ 404 или 500.Веб-браузер достаточно умен, чтобы знать об этом, и вызывает обратный вызов ошибки, определенный в коде javascript.

Для jQuery я считаю, что обратный вызов является глобальным, но я не уверен, так как мой jquery-fuслабый.

...