ajax脚本不更新信息

时间:2016-06-02 22:45:30

标签: javascript php jquery mysql ajax

我正在尝试创建一个ajax脚本来自动刷新用户在我的网站上的游戏内金额,但是,它无法正常工作。 我对ajax不是很好,所以我肯定做错了什么,如果有人能帮助我的话,我会高兴欣赏它。

这是我的代码:

的Javascript

<script type="text/javascript">
  (function($) {
      $.ajaxSetup({
          cache: false,
          beforeSend: function() {
            $('#money').show();
          },
          complete: function() {
            $('#money').show();
          },
          success: function() {
            $('#money').show();
          });
        var $container = $("#money"); $container.load("challenges.php?money=<?php echo $_SESSION['Money'];?>");
        var refreshID = setInterval(function() {
          $container.load("challenges.php?money=<?php echo $_SESSION['Money'];?>");
        }, 1000);
      });
  })(jQuery);
</script>

PHP部分

<?php
    echo "<div id='money'>Balance: $".$_SESSION['Money']." ||</div> ";
?>

$_SESSION['Money']等于用户的金额。 我一直坐着试图解决这个问题。如果您需要更多信息,请告诉我。我想这样做,以便用户不需要刷新页面以查看其余额。我尝试按照教程进行部分练习,但是我迷路了,我对ajax真的不好。任何帮助都是非常感激的。

1 个答案:

答案 0 :(得分:3)

$.load()可以使用可选的回调参数,请参阅http://api.jquery.com/load/

你可能想这样做:

(function($) {
    var $container = $("#money");

    function do_load(){
      $container.load("challenges.php?money=<?php echo $_SESSION['Money'];?>", function(){
          // show the container when loading is complete
          $container.show();
      });
    }

    do_load();
    var refreshID = setInterval(do_load, 1000);
})(jQuery);

完全重写并假设PHP将返回JSON:

HTML:

Balance: <span id="money"></span>

JS:

(function($) {
    var $container = $("#money");

    function do_load(){
      $.ajax({
        method: "POST",
        url: "challenges.php?money=<?php echo $_SESSION['Money'];?>",
      }).done(function(data) {
        // write the value of balance to the container
        console.log("Server returned:", data);
        $container.html(data);
      }).error(function( jqXHR, textStatus, errorThrown ){
          console.log("Server returned an error:", textStatus, errorThrown );
          console.log("jqXHR:", jqXHR);
      });
    };

    do_load();
    var refreshID = setInterval(function(){
        do_load();
    }, 1000);

})(jQuery);

PHP:

<?php
    // @TODO: fill your session variable (from a file / database / ...)
    $_SESSION['Money'] = rand(0, 100000); 
    echo $_SESSION['Money'];
?>