Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php AJAX页面加载表行| Safari_Php_Javascript_Ajax_Safari - Fatal编程技术网

Php AJAX页面加载表行| Safari

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

我正在开发一个用于简单处理、存储和交换不同数据的小web应用程序

加载页面时,我使用PHP创建一个javascript数组,并使用window.unload函数迭代该数组

数组的每个元素都保存一个联系人id,循环从另一个PHP脚本获取表示数据(例如名称、地址)的对应行,并将其附加到包装器div:

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']);