2017-01-14 52 views
1

我有一個AJAX方法,正在點擊的鏈接觸發DELETE方法,但儘管有我的jQuery工作一次,我沒有達到點AJAX方法是被觸發並且不能確定代碼有什麼問題。這可能是由於未捕獲的語法錯誤。 onload console.log會觸發,所以我知道該文件正在被識別,但點擊中的console.log不會觸發。另外,這是觸發DELETE方法的最好方法嗎?jQuery AJAX單擊DELETE方法不會觸發一致

這裏是jQuery的:

window.onload = function() { 
    console.log("Window loaded") 
    $('#blog-comment-delete').click(function(){ 
     var blogId = $(this).data("blog-id"); 
     var commentId = $(this).data("comment-id"); 
     var urlPath = '/app/blog/' + blogId + '/comment/' + commentId; 
     console.log('Pre-AJAX'); 
     $.ajax({ 
      method: 'DELETE', 
      url: urlPath, 
      success: function(){ 
       window.location.replace('/app'); 
      }, 
      error: function(error){ 
       console.log('Deletion Error: ' + error); 
      } 
     }); 
    }); 
}; 

如何使用Node.js應用途徑:

appRoutes.route('/blog/:blogId/comment/:blogCommentId') 

    .delete(function(req, res){ 
     models.BlogComment.destroy({ 
      where: { 
       blogId: req.params.blogId, 
       blogCommentId: req.params.blogCommentId, 
       userId: req.user.userId 
      } 
     }).then(function(){ 
      req.flash('info', 'Comment was successfully deleted.'); 
      res.send('Comment was deleted.'); 
     }); 
    }); 

鏈接:

<div class="blog-comments"> 
    {{#blog_comments}} 
      <p id="blog-comment">{{comment}}</p> 
      <a href="#" id="blog-comment-delete" data-blog-id="{{blogId}}" data-comment-id="{{blogCommentId}}">Delete</a> 
    {{/blog_comments}} 
</div> 
+2

難道沒有與此相同的ID'博客,評論,delete'多個元素? –

+0

@KeesvanLierop有。它用於每個評論。我是否應該使用其他唯一標識符才能準確觸發? – cphill

+0

嗯,一個id應該始終是唯一的,並且只能在同一個頁面上一次,因此可能是衝突。改爲改爲類名(請參閱我的回答) –

回答

2

而不是ID的,使用類名作爲選擇使用。 ID是唯一的,如果在同一頁面上有多個元素具有相同的ID,則您的事件偵聽器將會中斷。因此,而不是做:

<div class="blog-comments"> 
    {{#blog_comments}} 
      <p id="blog-comment">{{comment}}</p> 
      <a href="#" class="blog-comment-delete" data-blog-id="{{blogId}}" data-comment-id="{{blogCommentId}}">Delete</a> 
    {{/blog_comments}} 
</div> 

而且你的事件監聽器應該像:

$('.blog-comments').on('click', '.blog-comment-delete', function(){ 
}); 
-1

你可以嘗試像這樣 1)

$('#blog-comment-delete').on('click',function(){ 
    //Your code 
    }); 

2)如果第一次沒有再工作:

$("body").on("click", "#blog-comment-delete", function() { 
     //Your code 
    });  

3)

$('body').delegate('#blog-comment-delete','click',function(){ 
    //Your code 
    });