0
我很努力爲django創建一個留言框。現在一切正常,關於從數據庫中讀取數據,但是當我想添加新的留言時,整個頁面正在重新加載,並且從我能夠檢查的內容 - 表單的動作保持不變,並且沒有請求發送到功能在指定的網址下。我在這裏做錯了什麼?發送Ajax表單重新加載頁面,而不是發送請求
HTML:
<div id="shoutbox">
<form method="post" id="form" class="shoutbox-form">
<table>
<tr>
<td><label>User</label></td>
<td><input class="text user" id="nick" type="text" MAXLENGTH="25" /></td>
</tr>
<tr>
<td><label>Message</label></td>
<td><input class="text" id="shout" type="text" MAXLENGTH="255" /></td>
</tr>
<tr>
<td></td>
<td><input id="send-shout" type="submit" value="Dodaj!" /></td>
</tr>
</table>
</form>
<div id="shoutbox-container">
<span class="clear"></span>
<div class="shoutbox">
<div id="shoutbox-loading"><img src="css/images/loading.gif" alt="Loading..." /></div>
<ul>
</ul>
</div>
</div>
</div>
的jQuery:
$(document).ready(function(){
var inputUser = $("#nick");
var inputMessage = $("#shout");
var loading = $("#shoutbox-loading");
var messageList = $(".shoutbox > ul");
function updateShoutbox(){
messageList.hide();
loading.fadeIn();
$.ajax({
type: "POST",
url: "/shouts/",
data: "action=refresh",
dataType: "json",
success: function(data){
loading.fadeOut();
var c = data["response"];
messageList.html(c);
messageList.fadeIn(2000);
}
});
}
function checkForm(){
if(inputUser.attr("value") && inputMessage.attr("value"))
return true;
else
return false;
}
updateShoutbox();
$("#shoutbox-form").submit(function(){
if(checkForm()){
var nick = inputUser.attr("value");
var message = inputMessage.attr("value");
$("#send-shout").attr({ disabled:true, value:"Sending..." });
$("#send-shout").blur();
$.ajax({
type: "POST",
async: true,
url: "/shouts/",
data: "action=insert&user=" + nick + "&message=" + message,
//data: {"action" : "insert", "user": user, "message": message},
dataType: "json",
complete: function(data){
var c = data["response"];
messageList.html(c);
updateShoutbox();
$("#send-shout").attr({ disabled:false, value:"Shout!" });
}
});
}
else alert("All fields needed!");
return false;
});
});
我的網址:
url(r'^shouts/?$', "shoutbox"),
和功能:
def shoutbox(request, user=None, message=None):
response = ""
if not request.POST.get("action"):
return HttpResponseRedirect('/')
else:
req = request.POST.get("action")
if req == "insert":
response = shoutbox_add(message, user)
elif req == "refresh":
response = shoutbox_get(20)
if request.is_ajax():
result = simplejson.dumps({
'response': response
}, cls=LazyEncoder)
return HttpResponse(result, mimetype='application/javascript')
- 尼斯找到,好先生。此外,在你將來在這些類型的事情上自殺之前,乳齒象...開始在問題的開始。在我看到sje397的評論之前,我打算告訴你做一個簡單的提示('測試');返回false;在該函數的頂部,以測試它是否到達那裏。通常你可以通過從明顯的開始(即它是否進入函數?)來隔離這樣的問題。 – treeface 2010-10-08 00:15:41
我討厭犯這樣的錯誤:/謝謝 – mastodon 2010-10-08 05:25:24