2015-02-11 85 views
0

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

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

任何人都可以帮助我吗?

谢谢!

<!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); 
+0

恩请修复您的缩进,这太难以阅读。 – 2015-02-11 16:58:00

+0

谢谢,但那条线最终不需要。问题是我需要关于网站负载的数据,但数据在2次重新载入update.php后出现 – user3408380 2015-02-11 17:10:37

+0

您能否给我定义您认为“网站负载”的含义?因为数据在页面加载时可用。这不是全局性的,因为你忘了将它分配给'array'数组,但是它相信我。请研究JavaScript范围。 – 2015-02-11 17:37:07

回答

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); 
}); 

编辑:我做的阵列全球对你我想这是你弄错什么 “负荷”。

+0

谢谢,但问题是,我需要网站加载数据,用于其他目的。显示数组循环仅用于测试 – user3408380 2015-02-11 17:17:48

+0

,然后只是将该初始数组加载到文档就绪语句的那一行,它将变为全局的,我认为这就是您要求的内容,因为在此脚本中它已加载现场。 – 2015-02-11 17:32:50

1

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

这里的问题是因为ajax请求是异步的。它在后台运行,并在ajax请求运行之后运行。

$.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; 
 
}

+0

请不要使用异步false,总是编写非阻塞代码,利用“success”回调来执行任何需要在执行前返回ajax的代码。您的代码可能会严重降低浏览器的速度,具体取决于通过ajax传输的数据量。 – 2015-02-11 17:02:16

+1

我已经更新了上面的代码。 Thankyou @Dustin Poissant出头 – 2015-02-11 17:09:40

+0

很好的编辑,很棒的回答&#x1f44d; – 2015-02-11 18:14:58