在AJAX函数内部,变量具有有效值,不在外部

时间:2013-10-23 17:33:14

标签: javascript html ajax

我尝试使用全局变量并使用return子句,但是当离开AJAX函数时,变量保持为null。

   http.onreadystatechange =  
     function() { if(http.readyState==4 && http.status==200) {
                        vQuantity = http.responseText;
                        alert(vQuantity);
                }
     }

警告消息(上面)显示了一个有效值,变量是全局的,但返回AJAX函数的值为null。你们都有什么想法吗? 谢谢伙计们,马科斯。

AJAX例程没问题,但我想使用一个在AJAX例程之外加载(至少应该是)的变量,变量为null。

我该怎么做?下面你们都可以看到我的代码:

    <form><input type=hidden name="ElementoQuantidade"></form>

    function updateinsertAJAX(CodPagina) {
       var http;
       if (window.XMLHttpRequest) {
          http=new XMLHttpRequest();
       } 
       else 
       {
        http=new ActiveXObject("Microsoft.XMLHTTP");
       }

       var urlalvo = "updateinsertSQL.php";
       var compl = "?codpagina=" + CodPagina + "&t=";
       var randomize = parseInt(Math.random()*999999999999999);
       var modurl = urlalvo + compl + randomize;

       http.open("GET", modurl, true);

       http.onreadystatechange =  
         function() { if(http.readyState==4 && http.status==200) {
           var vqtde = http.responseText;
           document.getElementById('ElementoQuantidade').innerHTML = vqtde;
           }
           else
           {
            document.getElementById('ElementoQuantidade').innerHTML = "a lot of";
           }
       }
      http.send();
    }

实际上,我想使用那个变量vqtde,但是当我在AJAX函数之外使用它时,该变量(vqtde)为null。在AJAX函数内部,变量(vqtde)具有有效值。

你可以指导我吗?非常感谢,祝您度过愉快的一天。 马科斯

2 个答案:

答案 0 :(得分:0)

 var vqtde; // make it global 


function updateinsertAJAX(CodPagina) {
       var http;
       if (window.XMLHttpRequest) { ........

AND

http.onreadystatechange =  
         function() { if(http.readyState==4 && http.status==200) {
           vqtde = http.responseText; ....

答案 1 :(得分:0)

为什么不从函数中返回值?我会建议不要使用全局变量,除非它们是必要的,只是因为如果你的应用程序增长它们会在shuffle中丢失。

function yourFn(...) {
   ...do some stuff...
   return yourVariable;
}