2010-11-30 2 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でエラーをキャッチした。

throwing error:NameError( "グローバル名 'XMLHttpRequest'が定義されていません) はボトルをサポートしていますか?

+0

どこからコピーしましたか?ほとんどのPythonの行は意味を持ちません。 –

+0

NameErrorは、XMLHttpRequestが定義されていないため、おそらくどこかからインポートする必要があります。また、私の推測では、XMLHttpRequestはクラスなので、 '=='ではなく 'isinstance(request.POST、XMLHttpRequest)'を使いたいと思うでしょう。 –

答えて

0

通常の404または500応答を返すだけです。 Webブラウザはそれについて知るには十分スマートで、javascriptコードで定義されたエラーコールバックを呼び出します。

jQueryの場合、コールバックはグローバルだとは思いますが、私のjquery-fuが弱いとは分かりません。

2

2点。まず、XMLHTTPRequestであるかどうかをチェックしようとしている理由がわかりません。データがPOST経由で送信されたかどうかを確認するだけです。また、あなたはPOSTを送信しているが、GETで取得しようとしているように見えます。試してください:

0

Pythonで "XmlHttpRequest"をチェックするのは意味がありません。これは、Pythonが知っているか気にするものではなく、ブラウザの機能を取り巻くJavascriptのラッパーです。

POSTがAjaxから来ていることを本当に確認する必要がある場合は、リクエストヘッダーを確認できます.jQueryは他のJSフレームワークと同様に、常にHTTP_X_REQUESTED_WITHヘッダーを設定します。実際には、Accessing Request dataのボトルドキュメントの正確なヘッダーを使用した例があります。

関連する問題