这个关键字没有传递给jquery ajax中的另一个函数

时间:2016-10-15 03:28:31

标签: javascript jquery ajax

嘿,我将使用jquery ajax在asp.net中创建一个实时评论系统......

我必须使用insertComment()和getComment()...

第一个问题是'这个'我没有在一个功能内工作,而不是我搜索它,我通过传递解决了这个'这个' keywork作为函数参数,如下所示:

<input type="button" value="Post" id="btnComment" onclick="insertComment(this);" />

所以简而言之,我已经完成了插入评论部分,但现在我实际上面对的是这个&#39;这个&#39;关键字问题我认为bcz现在当我在insertComment()中调用getComment()函数时它比非常酷但是在getComment()函数中我还需要&#39;这个&#39;关键字,我已经尝试但不为我工作

贝娄是完整的代码:

insertComment方法

function insertComment(com) {

        var txtComment = $(com).parent('div.Comment-Post-2').parent('div.Comment-Post').parent('div.d8').children('div.Comment-Post').children('div.Comment-Post-2').children('.txtComment').val();

        $.ajax({

            url: 'index.aspx/NewComment',
            method: 'POST',
            contentType: 'application/json;charset=utf-8',
            data: '{cmntText: "' + txtComment + '"}',
            success: function (com) {

//here i'm calling the getComment function and passing 'this' keyword but its not works inside the getComment funciton

                getcomment(this);



                $('.txtComment').val("");

            },
            error: function (e) {
                alert(e);
            }
        });
    }

getComment方法

function getcomment(g) {

//this function calls when comment inserts and alerts ('works') pretty well  but the $(g).pa.... not working

        alert("works");
        $(g).parents('div.Comment-Section').hide();
}

请帮帮我 提前谢谢

3 个答案:

答案 0 :(得分:0)

使用context的{​​{1}}选项在$.ajax()回调中设置this

success

答案 1 :(得分:0)

getcomment(this);行中,this并不是指您要引用的对象,因为它位于另一个函数中。在ajax之前定义它然后你应该能够使用它

function insertComment(com) {

  var txtComment = $(com).parent('div.Comment-Post-2').parent('div.Comment-Post').parent('div.d8').children('div.Comment-Post').children('div.Comment-Post-2').children('.txtComment').val();

  var obj = this ; /* or any thing you want */

    $.ajax({

        url: 'index.aspx/NewComment',
        method: 'POST',
        contentType: 'application/json;charset=utf-8',
        data: '{cmntText: "' + txtComment + '"}',
        success: function (com) {

        //here i'm calling the getComment function and passing 'this' keyword but its not works inside the getComment funciton

            getcomment(obj);



            $('.txtComment').val("");

        },
        error: function (e) {
            alert(e);
        }
    });
}

答案 2 :(得分:0)

我通过将insertComment的'com'参数作为getComment参数传递来解决它:

function insertComment(com) {

    var txtComment = $(com).parent('div.Comment-Post-2').parent('div.Comment-Post').parent('div.d8').children('div.Comment-Post').children('div.Comment-Post-2').children('.txtComment').val();

    $.ajax({

        url: 'index.aspx/NewComment',
        method: 'POST',
        contentType: 'application/json;charset=utf-8',
        data: '{cmntText: "' + txtComment + '"}',
        success: function () {

//here i just passed 'com' instead 'this' and now it works

            getcomment(com);



            $('.txtComment').val("");

        },
        error: function (e) {
            alert(e);
        }
    });
}