クリックされたリンクに対して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>
それはこの同じid 'ブログにコメント-DELETE'持つ複数の要素があることだろうか? –
@KeesvanLieropあります。コメントごとに使用されます。それが正確にトリガするために一意である他の識別子を使用すべきですか? – cphill
IDは常に一意でなければならず、同じページ上に1回しか存在できないため、競合する可能性があります。代わりにこれをクラス名に変更してください(私の答えを参照してください) –