Php AJAX页面加载表行| Safari
我正在开发一个用于简单处理、存储和交换不同数据的小web应用程序 加载页面时,我使用PHP创建一个javascript数组,并使用window.unload函数迭代该数组 数组的每个元素都保存一个联系人id,循环从另一个PHP脚本获取表示数据(例如名称、地址)的对应行,并将其附加到包装器div:Php AJAX页面加载表行| Safari,php,javascript,ajax,safari,Php,Javascript,Ajax,Safari,我正在开发一个用于简单处理、存储和交换不同数据的小web应用程序 加载页面时,我使用PHP创建一个javascript数组,并使用window.unload函数迭代该数组 数组的每个元素都保存一个联系人id,循环从另一个PHP脚本获取表示数据(例如名称、地址)的对应行,并将其附加到包装器div: for (var i = 0; i < contIDs.length; i++) { var row = document.createElement("div"); row.cl
for (var i = 0; i < contIDs.length; i++) {
var row = document.createElement("div");
row.className = "rowDiv";
row.innerHTML = HTTPRequest("getRow.php?id=" + contIDs[i]);
document.getElementById("rowsWrapper").appendChild(row);
}
for(变量i=0;i
在FireFox中,页面加载并按预期逐个弹出行。
只有Safari加载页面,然后加载一段时间,所有行一次弹出到DOM中
有人能想象我做错了什么,或者有人能告诉我如何实现那种“加载动画”吗
谢谢你,亲切的问候–julian据我所知,你使用的for循环将在每次迭代中调用一个单独的HTTPRequest。。。在某些情况下,可能会导致我假设的挂起时间(如果我错了,请纠正我,我仍然是学生:P)。如果要调用PHP文件,为什么不使用AJAX调用使用JSON将整个数组发送到PHP 例: 然后用PHP对数组进行解码
$array = json_decode($_POST['jsondata']);
然后您可以立即发回整个列表。。。除非您希望在虚构的“跳过”时间内创建它,否则始终可以使用间隔
参考资料:实际上,这只是我的HTTPRequest函数的一个问题。我可以通过添加一个新参数,一个回调函数来解决这个问题 因此,当状态代码为200,就绪状态为4时,我将在HTTPRequest中调用回调
谢谢你,难道你不能在一个XMLHttpRequest中检索所有数据吗?在代码中可能更容易处理,在客户端的internet连接上可能更温和?我的“问题”是它可以获取大量数据。当一次加载所有内容时,它看起来并没有那么好(就像现在Safari中的情况一样),您应该考虑到对单个服务器的最大并发HTTP请求数的现有限制(IE8将此限制为2!):使用尽可能少的请求来检索数据(这也将提高总体性能)然后再考虑把事情弄得好看一点。当你获取了整个数据块后,你仍然可以设置动画。我开始这样做是因为它太慢了,而且看起来不太好。请求不必是并发的。我只想让Safari像Friefox一样一个接一个地显示div。也许这是不可能的,也不值得推荐的。但我至少想知道为什么会是这样……如果我可以问的话,您要传输多少数据?我正在调用的PHP文件中创建一个非常复杂的HTML树。这就是我不使用JSON的原因(实际上我在项目的其他地方使用JSON)。我只是希望加载的动画看起来像在FireFox中一样好。实际上,我可以一次加载所有数据,并在加载后在循环中传递它。但这使得加载时间很长,看起来不太好……如果您同时传递所有信息,我认为这将是一个平庸的等待时间。它肯定比做X个数量的httprequest要快得多。。。我只是想,将一个数组从PHP传递回jQuery将允许“本地”处理信息。注意:我不是在暗示我是对的,只是某种意义上的“思想食粮”。再说一次,这完全取决于你输出了多少数据!
$array = json_decode($_POST['jsondata']);