0

我认为这很简单。我有一个有效的 AJAX Jquery 脚本,可以将数据发布到另一个页面。我想在包含输入的分区中添加一个预加载器,每个分区都有一个类名,其中包含一个 id。

我需要知道如何在 beforeSend 函数中使用发布数据。

$('#stock_ctrl input').change(function() {

        $.ajax({
            type: "POST",
            data:   {   stock: this.value, 
                        id: this.name
                    },
            url: "example.php",

            beforeSend: function(data) {

                $('.updating'+data.id).html("Preloader here.");

               // I have tried data.id, this.name, $(this).attr.("name");

            success: function(){
                // success (this works fine)
            }
        });

    });

请参阅我在代码中的评论,这是我想使用来自原始输入的名称数据的地方,这就是我坚持的。非常感谢任何帮助。

4

3 回答 3

1

在发送 ajax 之前定义 $(this),例如:

$('#stock_ctrl input').change(function() {  
var self = $(this);

    $.ajax({
        type: "POST",
        data:   {   stock: self.val(), 
                    id: self.attr('name')
                },
        url: "example.php",
        beforeSend: function(data) {
            $('.updating'+data.id).html("Preloader here.");
           // I have tried data.id, this.name, self.attr.("name");
        success: function(){
            // success (this works fine)
        }
    });
});

那应该做的工作:)

于 2012-05-14T13:52:03.643 回答
1

当 beforeSend 的匿名函数正在执行时,您切换上下文,因此this不再引用同一个对象。你需要给this你想要的功能

$('#stock_ctrl input').change(function() {

    $.ajax({
        type: "POST",
        data:   {   stock: this.value, 
                    id: this.name
                },
        url: "example.php",

        beforeSend: $.proxy(function(data) {

           // this should now refer to the correct object and you can perform your operations
        }, this),
        success: function(){
            // success (this works fine)
        }
    });

});

刚刚输入,但应该可以工作

于 2012-05-14T13:53:35.127 回答
0

这应该这样做

$('#stock_ctrl input').change(function() {
    var myVar = $(this);
    $.ajax({
        type: 'post',
        data: {
            stock: myVar.val(),
            id: myVar.attr('name')
        },
        url: 'example.php',
        beforeSend: function(data) {
            //do anything with myVar
        },
        success: function(){
            //do anything with myVar
        }
    });
});
于 2012-05-14T13:53:42.070 回答