传递到ajax成功函数

时间:2016-09-13 08:19:26

标签: javascript jquery ajax

我开发了以下代码,我需要准确传递这个'这个' ajax成功函数的值(因为这个类有很多项)。怎么做。

$(document).on('click', '.address_remove_link', function(e) {
    var id = $(this).attr("data-id");
    $.ajax({
        type: 'POST',
        url: 'inc/controlllers/detele_shipping_addr.php',
        data: {
            internalId: id
        },
        success: function(response, this) {
            $(this).parent().closest('div').hide(200);
        },
        error: function(data) {
            console.log("error");
        }
    });
});

3 个答案:

答案 0 :(得分:1)

问题是因为undefined body处理函数中this的范围发生了变化。您可以将外部范围存储在单击处理函数中。试试这个:

success

答案 1 :(得分:0)

一种简单的方法是使用函数关闭的变量:

<Button
    android:id="@+id/wearable_alarm_button"
    android:layout_width="wrap_content"
    android:background="@drawable/red_button"
    android:layout_height="wrap_content" />

<Button
    android:layout_width="130dp"
    android:layout_height="120dp"
    android:background="@drawable/blue_button"
    android:id="@+id/wearable_timer_button"
    android:layout_gravity="right|bottom" />
<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text"
    android:textColor="#ffffff"
    android:layout_gravity="center"/>

或者您可以使用$(document).on('click', '.address_remove_link', function(e) { var $this = $(this); // *** var id = $this.attr("data-id"); // *** $.ajax({ type: 'POST', url: 'inc/controlllers/detele_shipping_addr.php', data: { internalId: id }, success: function(response) { $this.parent().closest('div').hide(200); // *** }, error: function(data) { console.log("error"); } }); }); MDNspec):

Function#bind

答案 2 :(得分:0)

您正在处理点击事件处理函数的范围,因此您可以创建一个self变量并像这样使用它:

$(document).on('click', '.address_remove_link', function(e) {
    var self = $(this),
        id = self.attr('data-id');

    $.ajax({
        type: 'POST',
        url: 'inc/controlllers/detele_shipping_addr.php',
        data: {
            internalId: id
        },
        success: function(response) {
            // Do something with "response"
            self.parent().closest('div').hide(200);
        },
        error: function(data) {
            console.log('error');
        }
    });
});