添加ajax(Node.js,PUG)后JQuery不起作用

时间:2018-04-02 20:10:13

标签: javascript jquery node.js ajax pug

我一直在尝试为我的博文网站添加类似的功能。

当我点击类似链接的号码时,它应该运行ajax调用。 在我的server.js文件中,我有一个函数接收post请求更新mongodb数据库中给定帖子的喜欢数量。 我已将链接的name属性设置为等于post_id,以便我可以在数据库中修改该帖子。

html

head
    style
        include ../styles/home.css
    link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css')
    script(src='https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/js/materialize.min.js')
    script(src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js')
    script.
        $(document).ready(function(){
            $('.number_of_likes').click(function(e){
                e.preventDefault();
                alert('This part wont run');
                $.ajax(
                    type: 'POST',
                    url: '/like',
                    data: {'post_id' : $(this).attr('name')},
                    success: function(result){
                        alert('it works');
                    },
                    dataType: 'json'
                );
            });
        });

h2 Welcome to the main page
br
br
br
br
br
mixin postCard(postData)
    .post_container
        .row
            .col.s12.m6
                .card.blue-grey.darken-1
                    .card-content.white-text
                        span.card-title #{postData.title}
                        p= postData.content
                    .card-action
                        a(href='#') #{postData.username}
                        a(href='/delete_post/'+postData._id) Delete
                        a(href='' name=postData_id class='number_of_likes') #{postData.likes} 

each post in result
    +postCard(post)

但点击事件不会被解雇。

1 个答案:

答案 0 :(得分:2)

问题可能是因为这是无效的语法导致整个应用程序停止:

$.ajax(
    type: 'POST',
    url: '/like',
    data: {'post_id' : $(this).attr('name')},
    success: function(result){
        alert('it works');
    },
    dataType: 'json'
);

您需要将其作为对象传递给{}之间的数据,如下所示:

 $.ajax({
    type: 'POST',
    url: '/like',
    data: {'post_id' : $(this).attr('name')},
    success: function(result){
        alert('it works');
    },
    dataType: 'json'
});