我的全局变量不会从$ .post函数javascript中获取值

时间:2013-05-25 03:03:56

标签: javascript ajax

您好我有一个全局变量“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>

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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!");

            }
   }

答案 2 :(得分:0)

发生这种情况是因为$.post调用是异步的,并且在您执行if数据块时,您没有usuario变量带有值(因为它是&#39; s空)。

您可以将ifelse块放入回调中,或创建其他功能并在回调到$.post时调用它,以正确获取usuario变量具有预期的价值。

你需要一些代码吗?

祝你好运。