jQuery代码不能成功

时间:2015-07-25 08:49:23

标签: javascript jquery ajax

我有一个完美的jQuery ajax代码。但是我需要它来改变成功点击时触发jQuery ajax事件的按钮的类。但我在sucess:上的代码不起作用。请参阅下面的代码。

jQuery代码

    $(document).ready(function() {
        $('.btn.btn-outline.btn-sm').click(function() {
            var pollQId = $(this).val();
            $.ajax({
                type: "POST",
                url: "Default.aspx/LikePoll",
                data: JSON.stringify({ 'pollQId': pollQId }),
                contentType: "application/json; charset=utf-8",
                datatype: "json",
                success: function() {
                    $(this).addClass("btn btn-primary btn-sm");
                },

                error: function(response) {
                    alert(response.d);
                }
            });
        });
    })

请帮帮我。非常感谢。

1 个答案:

答案 0 :(得分:1)

成功回调中的this不是您期望的this,要使此参数与点击的按钮保持一致,请将context: this作为附加参数传递给.ajax功能

您可以从jQuery.ajax找到更多信息:

  

上下文

     
      
  • 类型:PlainObject
  •   
  • 此对象将是所有与Ajax相关的回调的上下文。默认情况下,上下文是表示Ajax设置的对象   在调用中使用($ .ajaxSettings与传递给
    的设置合并   $就)。
  •   
$(document).ready(function() {
        $('.btn.btn-outline.btn-sm').click(function() {
            var pollQId = $(this).val();
            $.ajax({
                type: "POST",
                url: "Default.aspx/LikePoll",
                data: JSON.stringify({ 'pollQId': pollQId }),
                contentType: "application/json; charset=utf-8",
                datatype: "json",

                // Add this param, so the `this` in the success callback
                // will be the clicked button.
                context: this,

                success: function() {
                    $(this).addClass("btn btn-primary btn-sm");
                },

                error: function(response) {
                    alert(response.d);
                }
            });
        });
    })