Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 成功回调中的JQuery Ajax类型错误_Javascript_Ajax_Jquery - Fatal编程技术网

Javascript 成功回调中的JQuery Ajax类型错误

Javascript 成功回调中的JQuery Ajax类型错误,javascript,ajax,jquery,Javascript,Ajax,Jquery,我创建了一个按钮,当点击服务器上的Ajax时,当从服务器返回时,按钮的颜色和文本将发生变化(类似于facebook中的+1添加好友),这是我在.js中的代码: $(".blue").on("click", function(){ var firstName = $(this).prev().prev().text(); var lastName = $(this).prev().text(); $(this).text("Add Friend..."); var

我创建了一个按钮,当点击服务器上的Ajax时,当从服务器返回时,按钮的颜色和文本将发生变化(类似于facebook中的+1添加好友),这是我在
.js
中的代码:

$(".blue").on("click", function(){
    var firstName = $(this).prev().prev().text();
    var lastName = $(this).prev().text();
    $(this).text("Add Friend...");
    var data={
        firstName: firstName,
        lastName: lastName
    };
    $.ajax({
        url: '/ajax/friendRequest',
        data: data,
        dataType: 'json',
        success:function(){
            alert(123);
            $(this).removeClass("glass blue");
            $(this).addClass("greenStatic");
            $(this).text("Request sent");
        }
    });
});

一切正常,请求将成功更改数据库,但当它返回到成功回调时,我只看到
警报(123)和下面的3行没有运行,我的chrome开发者工具抛出异常的
类型错误
我搜索并将
$
签名更改为
jQuery
,但我仍然在成功回调中遇到同样的问题
$(此)
没有引用按钮,将其缓存在成功回调之外,如

$(".blue").on("click", function(){
    var btn = $(this);
    ...
    ....
    success:function(){
        ...
        btn.addClass("greenStatic");
        ...
    }
});

在成功回调中,
$(此)
不引用按钮,请将其缓存在成功回调之外,如

$(".blue").on("click", function(){
    var btn = $(this);
    ...
    ....
    success:function(){
        ...
        btn.addClass("greenStatic");
        ...
    }
});
这里
不是指控件,而是指Ajax请求对象。因此,用控件id替换
。它应该可以工作

像下面这样的

        $("#controlId").removeClass("glass blue");
        $("#controlId").addClass("greenStatic");
        $("#controlId").text("Request sent");
这里
不是指控件,而是指Ajax请求对象。因此,用控件id替换
。它应该可以工作

像下面这样的

        $("#controlId").removeClass("glass blue");
        $("#controlId").addClass("greenStatic");
        $("#controlId").text("Request sent");

@mojibuntu yep,
$(此)
参考jQuery对象,使用
$(.blue”)
again@vladkras不,可能有多个
.blue
元素。你想锁定被点击的人。是的,我就是这么回答的。@Sheikheera很抱歉,你回答的时候我正在打字和喝啤酒,所以我没看到你是对的answer@vladkras,没关系,亲爱的,但不要喝熊,它刺激大脑,杀死细胞,产生精神依赖,希望你不介意。@mojibuntu是的,
$(这)
参考jQuery对象,使用
$(“.blue”)
again@vladkras不,可能有多个
.blue
元素。您想将单击的元素作为目标。是的,这就是我的答案。@Sheikheera很抱歉,在您回答时我正在打字和喝啤酒,所以我看不出您的回答正确answer@vladkras,没关系,亲爱的,但是不要喝熊,它会刺激大脑,也会杀死cells并创建心理依赖,希望您不介意。
#controlid
是元素或其他东西的id?您要在其上执行addClass和removeClass操作的元素。明白了吗?是的,应该指向按钮。如果有帮助,请接受答案。我有许多这些项目,不想在需要时更改所有项目单击一个,则我必须使用
$(此)
@SheikhHeera是的,没错。我现在刚检查过。
#controlid
是元素或其他东西的id?您要在其上执行addClass和removeClass操作的元素。明白了吗?是的,应该指按钮。如果有帮助,请接受答案。我有很多这样的项目,不想在需要时全部更改点击一个,我必须使用
$(这个)
@sheikheera是的,没错。我现在刚检查过。