-1

我尝试使用全局变量并使用 return 子句,但离开 AJAX 函数时变量仍然为空。

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

警报消息(上图)向我显示了一个有效值,并且该变量是全局变量,但 AJAX 函数的返回值为 null。大家有什么想法吗?谢谢朋友,马科斯。

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

我怎样才能做到这一点?下面你们都可以看到我的代码:

    <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) 为空。在 AJAX 函数内部,变量 (vqtde) 具有有效值。

你能指导我吗?非常感谢,祝您有愉快的一天。马科斯

4

2 回答 2

0
 var vqtde; // make it global 


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

http.onreadystatechange =  
         function() { if(http.readyState==4 && http.status==200) {
           vqtde = http.responseText; ....
于 2013-10-23T17:35:46.520 回答
0

为什么不从函数中返回值?除非有必要,否则我建议不要使用全局变量,因为如果您的应用程序增长,它们可能会在混乱中迷失。

function yourFn(...) {
   ...do some stuff...
   return yourVariable;
}
于 2013-10-23T17:44:27.880 回答