gpt4 book ai didi

php - 增量输出 - Jquery 和 PHP

转载 作者:行者123 更新时间:2023-12-01 07:35:39 25 4
gpt4 key购买 nike

我有一个应用程序,可以对大量项目进行评分并为每个项目输出分数。

在我的 php 脚本中,我使用 ob_start 和 ob_flush 来处理每个评级的数据输出。如果我直接加载脚本,这会非常有效。但是当我尝试通过 jquery 使用 .get 时,整个内容会加载,然后放入容器中,而不是增量添加。

我想知道以下内容

  1. 有没有办法在获取完成之前启动数据放置?
  2. 我是否需要不断轮询脚本直到该过程完成?
  3. 有没有比 get 更有效的方式来显示数据?

最佳答案

对于这类问题,我会有这样的做法:

  1. 为在浏览器中禁用 JavaScript 的用户保留使用 ob_start()ob_flush() 的旧脚本。
  2. 对于启用了 JavaScript 的用户,一次加载一个预定义的数字内容。为了区分 js 是否启用用户,我正在考虑 2 个页面。在第一页中,您显示旧脚本的链接。然后在这个页面中放置一个jquery代码来拦截对旧脚本链接的点击,因此点击该链接将显示(或创建)一个div,然后将内容加载到该div
  3. 您可以使用setTimeout连续调用AJAX代码,然后在达到特定条件(例如,空响应)后,您可以使用删除setTimeout清除超时。每个 AJAX 请求都需要有一个偏移参数,因此它将从上次 AJAX 调用中获取内容。收到响应后,增加下一个 AJAX 调用的偏移量。您可以为此使用全局变量。
  4. 您可以使用一个简单的全局变量来阻止 AJAX 请求在最后一个 AJAX 仍在等待响应时运行,以防止竞争条件。示例代码:

    //lock variablevar is_running = FALSE;//offset start with 0var offset = 0;function load_content($) {  //check lock  if (! is_running) {    //lock    is_running = true;    //do AJAX    $.get(URL,      { PARAM },      function(resp){        //put data to 'div'        //...        //if empty, then call clearTimeout        //...        //increase offset here        offset = offset + NUM_ITEM_FETCHED        //release lock        is_running = false;      });  }}

需要注意的是,使用 AJAX 调用时,必须手动确定响应,因为 ob_startob_flush 在这种情况下不起作用。

我希望这能帮助您创建自己的代码。

关于php - 增量输出 - Jquery 和 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com