0
$(this).find(':submit').attr('disabled',true);
        $.ajax(
        {
            url:'/enviarSugerenciaMessageBoard',
            cache: false,
            type: 'POST',
            data: $(this).serialize(),
            success: function(success)
            {
                if(success=='Envio correcto')
                {
                    console.log('Envio correcto');
                    $(this).find(':submit').attr('disabled',false);
                }else{
                    console.log('Error en el envio');
                    $(this).find(':submit').attr('disabled',false);
                }
            }
        });

这个 ajax 查询工作正常问题是当我从服务器获得“Envio Correcto”时,在控制台中我得到 Envio Correcto 但 attr disabled false 不起作用......

我尝试在成功时创建其他功能,例如附加或前置,但没有用

即使在 async:false

4

2 回答 2

2

success回调内部,this不是你调用的地方.ajax()。要控制this回调内部的值,可以使用context选项.ajax()

在您的情况下,您需要做的就是:

$.ajax({
    context: this, // what you wnat `this` to be inside success
    url:'/enviarSugerenciaMessageBoard',
    ...
    success: function(success) {
        // 'this' is what you passed in via context
    });

文档:http ://api.jquery.com/jQuery.ajax/ - 向下滚动查看context选项

于 2013-03-27T02:41:26.617 回答
2

因为this关键字在成功函数中不再属于该元素。您应该将此变量备份到另一个变量,而不是使用它。

像这样,

$(this).find(':submit').attr('disabled',true);
var self = this;
        $.ajax(
        {
            url:'/enviarSugerenciaMessageBoard',
            cache: false,
            type: 'POST',
            data: $(this).serialize(),
            success: function(success)
            {
                if(success=='Envio correcto')
                {
                    console.log('Envio correcto');
                    $(self).find(':submit').attr('disabled',false);
                }else{
                    console.log('Error en el envio');
                    $(self).find(':submit').attr('disabled',false);
                }
            }
        });
于 2013-03-27T02:34:04.107 回答