2010-11-30 48 views
1

我的Ajax代碼:如何將消息返回給ajax?

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

我在Python +一瓶架構處理器:

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響應。 Web瀏覽器足夠聰明,可以知道這一點,並調用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

在Python中檢查「XmlHttpRequest」沒有意義。這是一個瀏覽器功能的Javascript包裝,而不是Python知道或關心的任何東西。

如果您確實需要檢查POST是否來自Ajax,則可以檢查請求標頭 - 與其他JS框架一樣,jQuery始終設置HTTP_X_REQUESTED_WITH標頭。事實上,有一個例子在Bottle文檔中使用了這個確切的頭文件,用於Accessing Request data