获得响应后Ajax成功函数不执行

时间:2017-04-04 17:29:35

标签: jquery ajax response

以下是我的代码:

$(".simpleCart_shelfItem button").click(function() {
            $(this).prop('disabled', true);
            $(this).addClass('disabled');
            $(this).html("Adding &nbsp;&nbsp;<i class='icon-spinner9 spin'></i>");

            var action = "add";
            var queryString = "action="+action+"&pid="+this.value;

            $.ajax({
                    url: "add_cart",
                    data: queryString,
                    type: "POST",
                    success:function(data){
                        if(data == 1)
                            {
                                $(this).prop('disabled', false);
                                $(this).removeClass('disabled');
                                $(this).html("Added In Cart");
                            }
                    },
                    error:function (){}
                });
        });

我在一个页面上有6个产品。如果用户单击特定产品的“添加到购物车”按钮,则此代码将执行并向服务器发送请求。

代码执行正常,我甚至得到了回复。

问题是,即使在获得成功函数未执行的响应之后,即此代码未执行...

$(this).prop('disabled', false);
$(this).removeClass('disabled');
$(this).html("Added In Cart");

它只执行输入点击功能时的代码,即此代码:

$(this).prop('disabled', true);
$(this).addClass('disabled');
$(this).html("Adding &nbsp;&nbsp;<i class='icon-spinner9 spin'></i>");

然后冻结上面的代码。

未执行成功功能。

1 个答案:

答案 0 :(得分:1)

据我所知,当你在ajax调用中声明一个函数时,被点击元素的引用就会丢失。

所以,在$(&#34; .simpleCart_shelfItem按钮&#34;)的ajax成功函数中替换$(this)调用。

我认为这会奏效。