我正在構建一個Q &一個可以評論問題及其答案的網站。它是一個帶有ajax的線程評論系統。django:使用jquery動態插入評論表單
這是JavaScript部分:
function bindPostCommentHandler()
{
$('.commentFormWrapper form').submit(function() {
var current = $(this);
$.ajax({
type: "POST",
data: current.serialize(),
url: "{% comment_form_target %}",
cache: false,
dataType: "html",
beforeSend:function(xhr){
$('.submit', current).html('<img id="preloader" class="va-mid" src="{{MEDIA_URL}}img/indicator.gif" title="processing.." />');
$('#commentError').remove();
},
success: function(html, textStatus) {
current.parent().replaceWith(html);
bindPostCommentHandler();
},
error: function(xhr, textStatus, errorThrown) {
$('#commentError').remove();
$('.submit', current).html('<input type="submit" name="submit" class="submit-post small-button" value="Submit" />');
if(xhr.status == 400){
current.before('<li id="commentError" class="no-bullet errornote margin10">OOPS ! your comment looked liked a spam. Try again with some modifications.</li>');
}else {
current.before('<li id="commentError" class="no-bullet errornote margin10">Your comment was unable to be posted at this time. You may try after sometime.</li>');
}
//bindPostCommentHandler();
}
});
return false;
});
}
$(document).ready(function() {
bindPostCommentHandler();
});
HTML部分:
<!-- comment form for question -->
<div class="commentFormWrapper">
{% render_comment_form for question %}
</div>
<!-- comment form for answers -->
{% for answer in question.answers.all %}
<div class="commentFormWrapper">
{% render_comment_form for answer %}
</div>
問題是,當只有在它的工作原理頁面的單一形式順利。有多種形式的工作,但多次發送請求到服務器(以倍數增長)。
此外,它會更好地動態插入/刪除窗體。但是,如果我手動添加表單的html,我會錯過註釋表單中的csrf標記和時間戳字段。任何人都有解決方案?
你什麼時候打電話給你bindPostCommentHandler功能?它可能被稱爲多次? – codeape 2010-01-18 13:00:48
我在頁面加載時調用一次,並在評論發佈成功時調用一次。你可以在$ .ajax({... success:function(..){--here--}中看到這個問題。 問題是由於html標籤類名引起的,我應該使用id,然後綁定。 – anand 2010-01-18 15:26:05
style =「tdisplay:none;」,應該是style =「display:none;」? – dotty 2010-01-18 16:56:55