quarta-feira, 15 de julho de 2009

Erro em tempo de execução do Microsoft JScript: '__pendingCallbacks[...].async' é nulo ou não é um objecto.

Você está utilizando callbacks e se depara com o erro:

__pendingCallbacks[...].async' is null or not an object

Esse é o código original: em negrito - for( i = 0 - o problema, e logo mais em negrito tb aonde ocorre o problema:


// Código original, gerado pelo asp.net 
function WebForm_CallbackComplete()    
 {       
  for (i = 0; i < __pendingCallbacks.length; i++)   
   {
    callbackObject = __pendingCallbacks[i]; 
    if (callbackObject == callbackObject.xmlRequest(callbackObject.xmlRequest.readyState == 4))
     {
      WebForm_ExecuteCallback(callbackObject); 
      if (!__pendingCallbacks[i].async)   {
      __synchronousCallBackIndex = -1;
      } 
      __pendingCallbacks[i] = null; 
      var callbackFrameID = "__CALLBACKFRAME" + i; 
      var xmlRequestFrame = document.getElementById(callbackFrameID); 
      if (xmlRequestFrame) { 
      xmlRequestFrame.parentNode.removeChild(xmlRequestFrame); 
      }  
     }               
    }              
   }  
 }
 
O problema:
O i de for( i = 0 está como uma variavel global e não pode alterar dentro do ciclo.
O que fazer? adicione um var para torna-la local.
for(var i = 0
A solução completa e subitiuindo a função fica (coloque o script em sua página);