2013-03-27 80 views
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禁用虛假不工作...AJAX查詢錯誤

我嘗試甚至在異步做出像追加或預先準備,但沒有工作

成功的其他功能:假

+0

'this'裏面的回調指的是ajax對象,而不是你之前的'this'。另外,我建議你使用'prop()'而不是'attr()'來'disable'元素。 – Jashwant 2013-03-27 02:38:58

回答

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); 
       } 
      } 
     }); 
+0

很棒!這是爲什麼????你能解釋我爲什麼我的代碼不工作 – andrescabana86 2013-03-27 02:36:40

2

裏面的success回調,this是不是它是從那裏你叫.ajax()。要控制到回調內部的this值,你可以使用.ajax()

context選項在你的情況,你需要做的是:

$.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選項

+0

這就是我所喜歡的SO。你總是學習新事物。感謝'context' :) – Jashwant 2013-03-27 02:45:12