나는 Q를 구축하고 있습니다. & ajax가있는 스레드 주석 처리 시스템입니다.django : 동적으로 jquery를 사용하여 주석 양식을 삽입하십시오.
이 자바 스크립트 일부입니다
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 함수를 호출 않습니다
그럼 당신은 두 번
같은 뭔가? 아마도 여러 번 호출 될 것인가? – codeapeparent()
전화를해야페이지 로딩 시간에 한 번, 그리고 코멘트가 성공적으로 게시되었을 때 한 번 호출합니다. html 태그 클래스 이름 때문에 문제가 발생합니까? 대신 id를 사용하고 바인딩해야합니다. – anand
style = "tdisplay : none;", style = "display : none;"이어야합니까? – dotty