【问题标题】:Dynamicly creating a js array with php every x seconds每x秒用php动态创建一个js数组
【发布时间】:2016-02-16 01:09:10
【问题描述】:

感谢 php,我每 2 秒填充一个 js 数组,但它只在第一次工作,因为 php 代码仅在我打开窗口时执行,但我想在每次启动 js 函数时执行它。

这是我的代码:

function update(){
    var datas = <?php echo Gallery::getPhotos(); ?>;
    ...
}

setInterval( "update()", 2000 );

问题是var datas 永远不会改变,因为&lt;?php echo Gallery::getPhotos(); ?&gt;; 只是第一次执行。如何每 2 秒执行一次 php? 我看到了对文件提出请求的解决方案,但我不知道该怎么做,也不知道这是否是仅适用于 1 条指令的解决方案。

Gallery是一个存储图片的单例类,函数getPhotos()返回一个带有照片名称的数组。

【问题讨论】:

  • 虽然我知道 AJAX 可用于执行此操作,但我找不到提出此问题的 SO 问题,而不是有关 AJAX 的问题。如果其他人可以找到重复项,请举报。

标签: javascript php


【解决方案1】:

由于&lt;?php ... ?&gt; 仅在页面加载时运行,您可能必须使用 AJAX。下面是一个基本的例子:

编辑:这是一个工作示例:

setInterval(function(){
    $.get("myphp.php",function(data){
        update(data);
    });
},5000);

function update(data){
    //...
}

参考:http://api.jquery.com/jQuery.get/

【讨论】:

  • 谢谢你,我会试试这个!所以我们必须创建一个文件,否则我们不能做请求
  • 成功了吗?
  • 差不多,我可以得到数据,但我不能在函数之外使用它们
  • 我在这里找到答案stackoverflow.com/a/1639584/4623982 不幸的是,您的解决方案不起作用,它解释了为什么会有
  • 我的解决方案会起作用,因为我们不返回 $. (XHR) 对象。检查我的代码后,我意识到它在返回时不会等待响应。无论如何,我认为您的检索现在有效。请注意,使用 syncronous 任务可能会导致浏览器在等待响应时锁定,因此我在上面建议了 asyncronous 答案。我已通过为您提供的 ansycronous 的工作(和测试)示例添加了对我的答案的编辑:-)
猜你喜欢
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
  • 2014-08-26
  • 2020-06-17
  • 2016-06-12
相关资源
最近更新 更多