1

嗨,我有一个全局变量“usuario”,我想把它放在一个从 $.post 函数中得到的值,但它不起作用。变量保持其原始值。我做了一个测试,我发出了警报(usuario);进入函数并且它起作用,警报显示函数的值。下面的代码:

    <script type="text/javascript" >

    var usuario="";
    $.post("cargarDatos.php",{},function(r){

            usuario = r;
            alert(usuario);

        });
    if(usuario !== "Nada"){
        document.write("El usuario conectado es: "+usuario);
        document.title="Actividad de "+usuario;

    }else{
        document.write("No hay usuario conectado!");

        }



</script>
4

3 回答 3

1

$.post() 是异步的。警报发生在请求响应从服务器返回并调用回调函数之后。同时,脚本在回调实际发生之前已经运行了 if 语句。将一些警报放入 if else 块中,您可以看到事情发生的顺序。

于 2013-05-25T03:06:25.740 回答
1

Ajax 是异步的,您的处理逻辑将在 ajax 回调之前执行。所以需要在ajax回调发生后进行处理。

试试这个方法。

   function CallAjax(callback)
   {

       $.post("cargarDatos.php",{},function(r){
       callback(r); //pass in the result
     });


   function MakeCallProcessResult
   {
      CallAjax(myCallBack);

   }

   function myCallBack(usuario )
   {

          alert(usuario);
          if(usuario !== "Nada"){
            document.write("El usuario conectado es: "+usuario);
            document.title="Actividad de "+usuario;

            }else{
            document.write("No hay usuario conectado!");

            }
   }
于 2013-05-25T03:09:35.813 回答
0

发生这种情况是因为$.post调用是异步的,并且在您执行if块的那一刻,您没有具有usuario值的变量(因为它是空白的)。

您可以将ifandelse块放在回调中,或者创建其他函数并在回调中调用它$.post,以usuario正确获取具有预期值的变量。

你需要一些代码吗?

祝你好运。

于 2013-05-25T03:07:26.957 回答