在站点加载时在AJAX中加载PHP文件

时间:2015-02-11 16:52:42

标签: javascript php jquery ajax

我有一个php文件,可以从目录中检索最新的100个图像。我有一个自动重新加载php文件的脚本,以便我们可以使用javascript数据。

但问题是,我们没有收到有关网站加载的信息,但仅在重新加载php文件2次之后。我们需要有关其他功能的网站负载数据。

任何人都可以帮助我吗?

谢谢!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="../js/jquery.js"></script>
<script>

var array = [];

$(document).ready(function () {

    window.setInterval(function () {
        $(function () {
            $.ajax({
                type: 'POST',
                url: 'update.php',
                cache: false,
                success: function (result) {
                    array = result;
                },
                dataType: "json"
            });
        });
        var index;
        var text = "<ul>";
        for (index = 0; index < array.length; index++) {
            text += "<li>" + array[index] + "</li>";
        }
        text += "</ul>";

        document.getElementById("demo").innerHTML = text;
    }, 5000);

});
</script>

</head>

<body>
<p id="demo"></p>
</body>
</html>

PHP文件数组导出:

echo json_encode($files); 

2 个答案:

答案 0 :(得分:1)

使用回调函数,如下面的代码段所示。 只有在收到响应后才会执行ajax请求下面的代码。

这里的问题是因为ajax请求是异步的。这在后台运行,并且首先运行ajax请求后的代码。

&#13;
&#13;
$.ajax({
type: 'POST',
url: 'update.php',
cache: false,
success: function(result) {
    callbackFunction(result)
},
dataType:"json"
});  

function callbackFunction(array) {
    var index;
    var text = "<ul>";
    for (index = 0; index < array.length; index++) {
      text += "<li>" + array[index] + "</li>";
    }
    text += "</ul>";
    document.getElementById("demo").innerHTML = text;
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

var array = [];
function displayArray(array) {
  var text = "<ul>";
  for (var index = 0; index < array.length; index++)
    text += "<li>" + array[index] + "</li>";
  text += "</ul>";
  $("#demo").html(text);
}
$(document).ready(function() {
  array = <? php echo json_encode($files); ?> ;
  displayArray(array);
  window.setInterval(function() {
    $.ajax({
      type: 'POST',
      url: 'update.php',
      cache: false,
      success: function(x){
        array = x;
        displayArray(array);
      },
      dataType: "json"
    });
  }, 5000);
});

编辑:我为你制作了全局数组,我认为这是你误以为“加载”。