$ .post在javascript之后执行

时间:2016-06-11 13:54:06

标签: javascript php

抱歉,如果我的标题不清楚,但我不确定如何形成问题/问题。 所以,我有这个代码:

HTML:

<button onclick="test()">test</button><br>

的javascript:

function test(){
  var text="Old text";  
  $.post('test.php',function(data){
      text=data;
    });
  alert(text);
}

PHP:

<?php
   echo "New text";
?>

但在警告框中我收到“旧文字”。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

在回调函数内移动警报。在其他地方,当$ .post正在运行时执行警报。

function test(){
  var text="Old text";  
  $.post('test.php',function(data){
      text=data;
      alert(text);
    });

}

更新:如果警报后有更多代码要执行,您可以将这些操作包装在新函数中:

    function test(){
      var text="Old text";  
      $.post('test.php',function(data){
          text=data;
          moreActions(text);
        });
    }

   function moreActions(text){
     alert(text);
     // and more actions to work with TEXT here
   }

答案 1 :(得分:-2)

$ .post()是一个异步函数,因此在从post()请求获取数据之前,alert()正在执行。尝试使用jquery.deferred()同步工作