2013-11-22 2 views
0
$("#comment-post-button").click(function(){ 
    var event_id = document.getElementById('event-id').value; 
    var url= '/post-comments/'+event_id +'/'; 
    $.post(url , {csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value, 
     content:document.getElementsByName('comment-post-content')[0].value 
    }); 
    $("#refresh-comments").load("/comments/" + event_id + '/', null); 
    $("#comment-post-content").val(""); 
    return false; 
    }); 

위의 코드는 정상적으로 작동합니다. 그러나 '/ comments /'url의 처리기는 최신 게시물을 반환하지 않습니다. 나는 그것의 최신 추가를 못하고, 성공 후 다음에 표시되는 객체를로드하지만 해요jquery .load() 함수가 최신 게시물을 반환하지 않습니다.

def comments(request, event_id): 
    if request.method == 'GET': 
    event = get_object_or_404(Event, id= event_id) 
    variables = RequestContext(request, { 
     'event' : event 
    }) 
    return render_to_response('comments.html', variables) 

다음은 도면이다.

{% for comment in event.comment_set.all %} 
    <a href="/{{ name }}/" class="first_name">{{ comment.author.first_name }}</a> 
    {{ comment.content }}<br> 
    {{ comment.pub_date }} 
{% endfor %} 

Pls는 도움말 : 은 여기 comments.html '입니다. 나는 붙어있다.

답변

2

문제는 비동기 콜백입니다. 즉, load()post()이 완료 될 때까지 기다리지 않습니다. 따라서 load에 해당하는 코드를 콜백으로 옮기십시오. 또한, comment-post-content의 리셋도 load 방법

var data = {csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value, 
    content:document.getElementsByName('comment-post-content')[0].value 
} 
$.post(url , data, function(){ 
    $("#refresh-comments").load("/comments/" + event_id + '/', function(){ 
     $("#comment-post-content").val(""); 
    }); 
}); 

또한, 지속적으로 jQuery를 사용하십시오에서 콜백입니다 있습니다. 그렇게 많이 읽을 수있게됩니다.

관련 문제