segunda-feira, 24 de novembro de 2014

Javascript : como salvar qualquer tipo de valor de uma requisição ajax

Uma das coisas que mais batem a cabeça de quem trabalha com ajax é conseguir salvar os valores retornados numa requisição do tipo

var xmlhttp;
function myRequestFunction(){

    var http_request = new XMLHttpRequest();
 
    try{
       // Opera 8.0+, Firefox, Chrome, Safari
       http_request = new XMLHttpRequest();
    }
    catch(e){
 
        // Internet Explorer Browsers
 try{
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
 catch(e){
     try{
          http_request = new ActiveXObject("Microsoft.XMLHTTP");
     }
     catch(e){
                alert("Your browser broke!");
         return false;
     }
        }
    }
 
    http_request.onreadystatechange = function f(){
    
        if( http_request.readyState == 4  ){
            var jsonObj = JSON.parse(http_request.responseText);
            valor = jsonObj.value;
        }

    }
    
    http_request.open("GET", data_file, false);
    http_request.send();

}

onde o valor que queremos salvar é exatamente

valor = jsonObj.value;
pois bem, para poder pegarmos esse valor, basta termos três elementos : uma variável global e duas funções:
var x;

function getX(){
    return x;
}

function setX(valor){
    x = valor;
}

E então só fazermos

...
        if( http_request.readyState == 4  ){
            var jsonObj = JSON.parse(http_request.responseText);
            setX(jsonObj.value);
        }
...

e finalmente poderemos pegar o valor de nossa requisição com a função 'getX()' :


É bem mais simples do que se imaginava não ?.