2013-12-23 3 views
1

Я работаю на социальном сайте. При первой загрузке он извлекает все сообщения, каждый с двумя комментариями max. Если в комментариях больше двух , прикрепите к нему кнопку More comment, если щелкнуть мышью, отобразится все комментарии и замените кнопку Less comment.AJAX в AJAX не работает правильно

Это всего лишь небольшая история о том, как это работает. Я хочу, чтобы всякий раз, когда был сделан комментарий, он должен быть добавлен к существующим и отображаться мгновенно через AJAX. Он делает это, но каждый из повторного комментариев 3 раза, когда вы перезагрузите страницу, все в порядке ...

<div class = 'post_updates'> 
    <div class = 'feeds'> 
    <div class = 'commentdiv'> 
     <textarea autocomplete = 'off' class='commenttext form-control' rows = '1' 
     placeholder='Have your say...'></textarea> 
     <button class='comment btn btn-xs btn-primary onespacedown' value = '7' 
     type='submit'>Comment</button> 
    </div> 
    </div> 
</div> 

JQuery AJAX код:

$('.feeds').on('click', '.comment', function() { 
var $this = $(this); 
var post_comment = $this.parents('.feeds').find('.commenttext').val(); 
var post_id = $(this).val(); 
var user_id = $(".user_id").text(); 
var request = $.ajax({ 
     url: "insert.php", 
     type: "POST", 
     data: { post : post_id , user : user_id, comment: post_comment }, 
     dataType: "html" 
    }); 
    request.done(function(msg) {  
     $pc = $this.parents('.feeds').find('.per_comment'); 
     //fetch comments and display 
      var request = $.ajax({ 
       url: "comments.php", 
       type: "POST", 
       data: { 
        post: post_id, 
        user: user_id 
       }, 
       dataType: "html" 
      }); 
      request.done(function (msg) { 
       $pc.html(msg).data('loaded', true); 
       $this.replaceWith("<button class='lesscomments btn-block pullcomments' value='' name = 'more' type='submit'>Less comments</button>"); 
       $this.parents('.feeds').find('.commenttext').val(''); 
     }); 
    }); 
}) 

Заранее спасибо.

+0

@Tats_innit: [jQuery.ajax обработки продолжают ответов: «успех:» против «.done»] (http://stackoverflow.com/q/8840257/1438393) –

+0

@Tats_innit 'success' - это то же самое, что' done' ... – Yax

+0

Согласовано @AmalMurali Я пропустил второй звонок: http://stackoverflow.com/questions/8847829/what-is-difference-between-success -and-done-method-of-ajax –

ответ

0

попробовать $ .post в JQuery

$.post("insert.php",{post : post_id , user : user_id, comment: post_comment},function(){}) 
.success(function(data){ 
    //callback when first post completed 
    //begin second ajax post 
    $.post("comments.php",{post: post_id,user: user_id},function(){}) 
    .success(function(){ 
     //call back when second post completed 
    }); 
}); 
+0

В чем разница с кодом выше? – Yax

Смежные вопросы