2011-04-12 13 views
0

私はjQueryのnoobです。助けてください!非常に感謝しています!ジャンゴのAJAXはかなり混乱しています。

私urls.py: url('^xhr_test/$','posts.views.xhr_test'),

私のviews.py:

def xhr_test(request): 
if request.is_ajax(): 
    message = "Hello AJAX" 
else: 
    message = "Hello" 
return HttpResponse(message) 

ので、非常にシンプル。この設定は、私のHTMLページの2つのバージョンのいずれかで動作します。それだ

<script type="text/javascript"> 
$(document).ready(function() { 
     $.get("xhr_test", function(data) { 
      alert(data); 
     }); 
}); 
</script> 

HTMLバージョン1は成功です。 AJAXリクエストは、ページの読み込みが完了するたびに行われます。非常に動作するように、私は「こんにちはAJAX」

今すぐHTMLバージョン2が動作しないと言う素敵な警告ボックスを取得:私がクリックしたときに

$(document).ready(function() { 
    $("a").click(function() { 
     alert("hi"); 
     $.get("xhr_test", function(data) { 
      alert(data); 
     }); 
    }); 
}); 
<a href="">Click here</a> 

だから、私は警告を取得する「こちらをクリック」をその中に「こんにちは」、それから何もない。私はFirebugで何も見ないので、何も送ったり受け取ったりしていないようです。また、 "xhr_test"から "myApp/xhr_test"と "/ myApp/xhr_test"へのリクエストURLを無駄に変更しようとしました。

私は間違っていますか?

ありがとうございました!あなたのコードにevent.preventDefault();を追加






答えて

1

てみてください。例:

$(document).ready(function() { 
    $("a").click(function() { 
     event.preventDefault(); 
     alert("hi"); 
     $.get("xhr_test", function(data) { 
      alert(data); 
     }); 
    }); 
}); 
<a href="">Click here</a> 
+0

THAT WORKED!どうもありがとうございます!あなたはそれを説明できますか?私はそれが元のことをやって、それは元hrefのURLに行くことをやってから要素を防ぐことですか? – rabbid

+0

@Rabbid、まさにこれが起こっているのです。あなたが使用する別のオプションは、click関数がfalseを返すことです。 –

+0

FirefoxでpreventDefault()が動作しないことがわかりました。結局のところ、標準の解決策は、 'return false;'を使うことなのです。 – rabbid

関連する問題