Ajax问题检索数据

时间:2013-06-02 13:52:56

标签: php ajax database image

无论如何,

是否一个接一个地返回一个与获取的行对应的字符串数组?

基本上,如果我想从数据库中检索所有行,我会这样做:

$.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)))没有完成,它就会显示几秒钟的空白页。这对用户来说绝对不好。如果准备好显示图像,我至少要逐个显示图像。

1 个答案:

答案 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();
}
}
?>