2017-01-14 41 views
1

クリックされたリンクに対してDELETEメソッドをトリガするAJAXメソッドがありますが、jQueryを一度動作させても、AJAXメソッドがあるポイントに達していませんトリガされ、コードの何が間違っているかを判断することはできません。キャッチされていない構文エラーが原因である可能性があります。 onload console.logが起動するので、ファイルが認識されていることがわかりますが、クリック内のconsole.logは起動していません。また、これはDELETEメソッドをトリガする最善の方法ですか?ここでjQuery AJAX Deleteメソッドが一貫して実行されない

はjQueryのです:Node.jsのを使用して

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); 
      } 
     }); 
    }); 
}; 

アプリケーションルート:

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は常に一意でなければならず、同じページ上に1回しか存在できないため、競合する可能性があります。代わりにこれをクラス名に変更してください(私の答えを参照してください) –

答えて

2

を、使用クラス名をセレクタとして使用する:第1回は、その後に動作しない場合は、この 1)

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

2)のようにそれを試すことができます。 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

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

3)の代わりにIDの

$('body').delegate('#blog-comment-delete','click',function(){ 
    //Your code 
    }); 
関連する問題