Erro: Component returned failure code: 0xc1f30001

9 respostas
S

Erro: Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]

var req = new XMLHttpRequest(); req.send("GET", "http://.../?" + params, true);

O erro acontece na segunda linha. O que isso significa?

9 Respostas

M

Hummm, isto significa que você não instanciou a classe, acho que é isso. Bem na verdade você tem que pegar esta instância de acordo com o teu browser veja este exemplo:

function newXMLHttpRequest(){
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
	    try{
	        req = new ActiveXObject("Msxml2.XMLHTTP");
	    }catch(e){
	        try{
	            req = new ActiveXObject("Microsoft.XMLHTTP");
	        }catch(E){
	            xmlhttp = false;
	        }
	    }
	}
	
	return req;
}

:okok:

S

Ué, mas a primeira linha não está instanciando?

Eu sei que tem a incompatibilidade dos browsers, mas isso é um script pro greasemonkey. Só vai rodar no firefox.

Alguma idéia?

E

a princípio o script proposto pelo Marcos
irá rodar em qualquer browser, eu uso um similar
e funciona… :roll:

S

Certo, só que o meu só vai rodar em firefox, então tudo aquilo é desnecessário.

Ou não?

J

Não seria assim? :idea:

var req = new XMLHttpRequest(); req.open("GET", "http://.../?" + params, true); req.send(null);

E

bom segue um exemplo de mais ou menos como to usando… :roll:

/*
 * Returns an new XMLHttpRequest object, or false if the browser
 * doesn't support it
 */
function newXMLHttpRequest() {

  var xmlreq = false;

  // Create XMLHttpRequest object in non-Microsoft browsers
  if (window.XMLHttpRequest) {
    
	xmlreq = new XMLHttpRequest();

  } else if (window.ActiveXObject) {

    try {
      // Try to create XMLHttpRequest in later versions
      // of Internet Explorer

      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
      
    } catch (e1) {

      // Failed to create required ActiveXObject
      
      try {
        // Try version supported by older versions
        // of Internet Explorer
      
        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (e2) {

        // Unable to create an XMLHttpRequest by any means
        xmlreq = false;
      }
    }
  }

  return xmlreq;
}

 /*
  * Returns a function that waits for the specified XMLHttpRequest
  * to complete, then passes it XML response to the given handler function.
  * req - The XMLHttpRequest whose state is changing
  * responseXmlHandler - Function to pass the XML response to
  */
function getReadyStateHandler(req, responseXmlHandler) {

   // alert( "getReadyStateHandler(req, responseXmlHandler)" );

   // alert( req );

   // Return an anonymous function that listens to the XMLHttpRequest instance
   return function () {

     // alert( "function" );	
	
     // If the request's status is "complete"
     if (req.readyState == 4) {
       
       // alert( "req.readyState == 4" );
	   
       // Check that we received a successful response from the server
       if (req.status == 200) {

	 // alert( req.getAllResponseHeaders() );	

	 // document.getElementById( 'retornoXML' ).value = req.responseXML.value;	
	 // alert( "req.responseXML: " + req.responseXML );
	 // alert( "req.responseText: " + req.responseText );

         // Pass the XML payload of the response to the handler function.
         // responseXmlHandler( req.responseXML );		 	 
 	responseXmlHandler( req.responseText );

       } else {

         // An HTTP problem has occurred
         alert("HTTP error "+req.status+": "+req.statusText);
       }
     }
   }
 }
//---------------------------------------------------------------------------------
function search( value ) {

 var url = "http://www.sistema.dominio/serviço.ext";

 var req = newXMLHttpRequest();
 
 req.open("post",  url, true);
 req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 
 req.onreadystatechange = getReadyStateHandler( req, updateInfo );
 // o conteudo é a concatenação dos parametros e seus respectivos valores	
 req.send( "parametro=" + value ); 

}

function updateInfo( retorno_do_servidor ) {
   // aqui você implementa o tratamento dos dados retornados	
}	

}
J

Você não pode fazer isso pra outros dominios não, você tem que usar um path relativo!

E

cara isso ai é um exemplo só…

na minha app eu uso mais de 3 serviços destintos alem
da minha app no servidor :wink:

S

O erro era aquele mesmo, mas como é um script pro GM tive que fazer um pouco diferente, usando GM_xmlhttpRequest.

Valeu gente.

Criado 30 de maio de 2006
Ultima resposta 31 de mai. de 2006
Respostas 9
Participantes 4