是否一个接一个地返回一个与获取的行对应的字符串数组?
基本上,如果我想从数据库中检索所有行,我会这样做:
$.post('my_script.php', {id:id}, function(data){
$('#container').html(data);
});
my_script.php
<?php
$id = $_POST['id'];
$query = "SELECT image_name FROM my_list WHERE id=$id";
if($mysql_query = mysql_query($query)){
while($mysql_fetch_assoc = mysql_fetch_assoc($mysql_query)){
$mysql_result_name = $mysql_fetch_assoc['image_name'];
echo "<img src='".$mysql_result_name."'/>";
}
}
?>
这个问题是,只要这个语句(while($ mysql_fetch_assoc = mysql_fetch_assoc($ mysql_query)))没有完成,它就会显示几秒钟的空白页。这对用户来说绝对不好。如果准备好显示图像,我至少要逐个显示图像。
答案 0 :(得分:1)
这基本上是不可能的,因为PHP是一种服务器端语言,因此在完成脚本后数据可用。
所以你不能做这样的事情,必须等到剧本完成
或者您可以设置AJAX以便逐个检索行,这就是我现在想到的解决方案。
编辑:
作为更好的解决方案,您可以将flush()
附加到while
的末尾,以便在图像准备就绪时打印图像,但这不是100%的解决方案。它可能会或可能不会工作,具体取决于您的服务器和您从中调用PHP页面的方法。例如,对于AJAX,在收到来自服务器的success
响应之前,将不会调用200 OK
函数,该响应在页面完全加载时发送。
编辑代码:
<?php
$id = $_POST['id'];
$query = "SELECT image_name FROM my_list WHERE id=id";
if($mysql_query = mysql_query($query)){
while($mysql_fetch_assoc = mysql_fetch_assoc($mysql_query)){
$mysql_result_name = $mysql_fetch_assoc['image_name'];
echo "<img src='".$mysql_result_name."'/>";
flush();
}
}
?>