【问题标题】:Run ajax call in loop循环运行ajax调用
【发布时间】:2018-09-12 21:36:10
【问题描述】:

好的,所以我正在制作一种在线多人游戏,需要 4 人加入一个大厅。 一切都完成了,但我希望屏幕不断更新谁加入了大厅。 这是我的功能。

function lobbyquery(x){
$.ajax({
    url: 'inc/fn/lobbyload.php?lid='+ x,
    success: function(data) {
        var spl = data.split(",")
        var p1 = spl[0];
        var p2 = spl[1];
        var p3 = spl[2];
        var p4 = spl[3];
        var pl = spl[4];
        var pleft = 4 - pl;
        $('#game').html('Player1 : ' + p1 + '<br>Player2 : ' + p2 + '<br>Player3 : ' + p3 + '<br>Player4 : ' + p4 + '<br><Br>' + pleft + ' players left to join.')
      }
});

}

我找不到任何解决方案,请帮忙。

【问题讨论】:

  • 你应该使用 socket.io
  • 避免轮询使用套接字。

标签: javascript jquery ajax loops


【解决方案1】:

使用计时器每 # 秒/毫秒更新一次 DIV

setInterval(myMethod(x), 5000);

function myMethod(x)
{
  $.ajax({
    url: 'inc/fn/lobbyload.php?lid='+ x,
    success: function(data) {
      var spl = data.split(",")
      var p1 = spl[0];
      var p2 = spl[1];
      var p3 = spl[2];
      var p4 = spl[3];
      var pl = spl[4];
      var pleft = 4 - pl;
      $('#game').html('Player1 : ' + p1 + '<br>Player2 : ' + p2 + '<br>Player3 : ' + p3 + '<br>Player4 : ' + p4 + '<br><Br>' + pleft + ' players left to join.')
    }
  }
}

【讨论】:

  • 我试过这个,但问题是我在点击按钮时调用了这个函数。
【解决方案2】:

您始终可以设置时间间隔,但更好的方法是检查大厅负载中的新玩家。当您添加了新玩家时,您可以从您的 php 脚本中执行您的大厅查询更新功能(或类似功能)。

所以逻辑应该是这样的:

新玩家加入 > newPlayerToLobby.php

newPlayerToLobby.php 调用 javascript 大厅更新函数

【讨论】:

  • 好吧,这有点超出我的想象……你能详细解释一下吗?
  • 当然。因此,有两种主要方法可以解决检查新玩家的问题。 1. 让大厅不断检查是否有新玩家加入。 2.只有在添加新玩家时才更新大厅。因此,当每个新玩家加入时,您都需要调用大厅查询函数来刷新大厅信息。
猜你喜欢
  • 1970-01-01
  • 2012-03-03
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多