【问题标题】:Ajax issue retrieving dataAjax 问题检索数据
【发布时间】:2013-06-02 13:52:56
【问题描述】:

有没有办法一一返回与获取的行对应的字符串数组?

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

$.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))) 没有完成,它就会显示几秒钟的空白页。这对用户来说肯定是不利的。如果它们已准备好显示,我至少希望将图像一张一张地显示出来。

【问题讨论】:

  • 你可能想看看这个:stackoverflow.com/q/13250976/218196.
  • 一个。您说您要检索所有记录,但您的查询正在检索一个唯一的 id - 即仅一条记录(也就是说,如果您将 id=id 更改为 id=$id)。湾。返回纯数据(例如图像路径数组)并在客户端处理 HTML 混乱总是更好。 C。您可以通过发送多个ajax请求来一一检索。
  • imgur.com 是怎么做到的呢?如果您查看此页面(imgur.com/gallery/YHHtxfV),您会注意到右侧的侧边栏缩略图,如果您反复单击next,图像会一张一张显示,它已经足够快了。那他们怎么做呢?因为我正在寻找类似的东西。
  • @user2310422:可能是因为 id 列上没有索引,所以速度很慢?

标签: php ajax database image


【解决方案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();
}
}
?>

【讨论】:

  • imgur.com 是怎么做到的呢?如果您查看此页面(imgur.com/gallery/YHHtxfV),您会注意到右侧的侧边栏缩略图,如果您反复单击next,图像会一张一张显示,它已经足够快了。那他们怎么做呢?因为我正在寻找类似的东西。
  • PHP 不加载图像。它只是发送应该呈现给浏览器的 HTML 代码。然后,您的浏览器会呈现 html,然后尝试加载图像。在 IMGUR 中,它实际上会同时显示所有图像,而不是一个接一个地加载它们。那是您的浏览器正在尝试一个接一个地加载它们。因为您没有足够的带宽来瞬间加载它们。如果您有更好的连接,它们将一次性加载。
  • 我上面的代码怎么会慢很多?这是我页面上唯一的代码。当我去 imgur 时,速度要快得多。所以这里的互联网连接不是问题。
  • 我无法预测导致代码变慢的问题是什么。也许那是因为您正在执行一项额外的任务,即向用户显示不完整的数据。
  • 你能创建一个小提琴来证明这一点吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 2011-07-25
  • 2011-12-10
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
相关资源
最近更新 更多