2010-11-30 2 views
1

мой Аякса код:как вернуть сообщение ajax?

$.ajax({ 
     type: 'POST', 
    url: URL + "xyz/" , 
    data: {"email": email}, 
    success: function(data) { 
    alert('hello') 
    }, 
    dataType: "json", 
    }); 

мой обработчик в питона + бутылка рамки:

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 'не определено ",) это поддержка бутылки?

+0

Откуда Вы это скопировали? Большинство строк Pythons не имеют никакого смысла ... – 2010-11-30 20:43:15

ответ

0

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

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

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 
0

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

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