2011-04-12 110 views
0

我是jQuery noob這裏,請大家幫忙!非常感謝!AJAX在jQuery與jQuery相當混亂

我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頁面的兩個版本之一,此設置工程。

HTML版1是成功的:

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

就是這樣。只要頁面加載完成,就會發出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中沒有看到任何東西。我也嘗試將請求URL從「xhr_test」更改爲「myApp/xhr_test」和「/ myApp/xhr_test」無濟於事。

我在做什麼錯?

非常感謝!






回答

1

嘗試添加event.preventDefault();到您的代碼;例如:

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

工作!非常感謝!你能解釋一下嗎?我猜想它所做的是阻止元素執行它原本應該做的事情,那就是在href中的url? – rabbid 2011-04-12 01:35:08

+0

@Rabbid,這正是發生的事情。您將看到的另一個選項是使點擊功能返回false – 2011-04-12 01:45:05

+0

請注意,我剛剛發現preventDefault()在Firefox中不起作用。看起來標準的解決方案畢竟是使用'return false;'。 – rabbid 2011-04-12 03:23:16