【问题标题】:jQuery AJAX get PHP script, display the content as it loadsjQuery AJAX 获取 PHP 脚本,在加载时显示内容
【发布时间】:2011-07-13 04:08:41
【问题描述】:

我不得不与这个项目的 Facebook API 进行交互,我发现它实际上比我预期的要慢一些。正因为如此,我不得不做一些我认为相当不正统的事情:我需要将 Facebook 提供的内容加载回我的 PHP 脚本中,因为它从 Facebook 加载。传统上,我在脚本成功时将内容加载到 div 标签中;但是,我需要加载显示的内容。让客户在显示任何内容之前等待近一分钟让 Facebook 加载相册和所有相应的 cmets 是绝对不能接受的。希望我不会含糊其辞;我不是来这里要代码的,但我已经尝试了几乎所有我能想到的东西。这是我遗漏的一个简单概念吗?...我觉得这比我做的要容易。

我正在使用 jQuery AJAX,因为我发现它最容易使用。任何 cmets 和/或帮助将不胜感激。

【问题讨论】:

    标签: php jquery ajax facebook


    【解决方案1】:

    问题的根源在于 jQuery 的 AJAX 方法与 onreadystatechange 事件和 readyState 变量挂钩。 readyState 仅在文件完全传输时设置为 4,因此您的事件只会在下载完成后触发。

    在发送数据时访问数据在不同的浏览器系列中不一致。这样做将非常复杂且耗时。我建议首先做一些不同的事情,也许是通过在您自己的服务器上预测性地预加载相关的 facebook 数据。这可以编译为静态页面,然后可以很快地提供给您的用户。

    为了更快地将数据提供给您的用户,您还需要跳出框框工作。这里讨论了一个 jQuery 插件 (Does PHP flush work with jQuerys ajax?),它使 jQuery ajax 方法与流输出兼容。祝你好运。

    【讨论】:

    • 我查看了提到的插件,遗憾的是,自 2008 年左右以来,大多数现代浏览器都不允许过早访问 responseText 的插件站点。所以我想夹具起来了!我必须想出另一种做事的方法。我通常会尽量避免使用它们,但你觉得在这里使用 iframe 怎么样?
    【解决方案2】:

    问题似乎源于您一次获取的数据过多。我想您正在谈论从 ajax 接收内容,因为它会立即打印出来,但有可能该内容是立即构建和发送的,并且在整个解析完成之前您将无法访问数据。如果这是不正确的,请查看 COMET。如果这是真的,解决方案是限制一次检索的数据量,以减少解析时间。例如,在每个请求中检索 5 张照片。在检索下 5 张照片时将这 5 张照片添加到 DOM。

    【讨论】:

      【解决方案3】:

      不要将任何你想要的代码放在回调中,只需将它放在回调之后

      例如

      $("#div").load("facebook...", function() {
         //do stuff
      });
      //put the stuff you want to load at the same time, here
      

      【讨论】:

        猜你喜欢
        • 2011-05-12
        • 1970-01-01
        • 2012-12-22
        • 1970-01-01
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多