php - 将 php 输出拆分为更小的输出(ajax、php)的策略(嵌套 ajax 调用、ajax 中的 ajax?)

标签 php javascript ajax

我不知道搜索解决方案的正确术语。请提出一种策略,将 php 输出分解为小块,并将它们逐步传递给 ajax 的 responseText。

该项目是一个 ajax 网页,它接受文本字符串(姓氏)并将其传递给 php 程序。 php 代码获取姓氏并随机获取 3 个名字不同的人,并将其放入一个数组中。完成后,php 代码将联系外部服务器以检索与每个名称相关的信息,并将该信息输出到网页的 div 中。从外部服务器获取数据的过程非常慢。

这段代码基本上完成了,但是整个过程需要很长时间才能在屏幕上生成输出。有没有办法(策略)立即输出php代码的每一步,而不必等待完整的代码?

我的伪php代码是这样的:

<?

get 3 names; //output this immediately

foreach name { get phone number } 

?>

或者,我可以获取姓名和电话号码,并在转到下一个姓名之前立即输出。

是否有 php 或 ajax 代码/函数/策略可以实现此目的?请提出解决方案或搜索关键字。

添加/编辑:

感谢您的建议。是否可以在父ajax调用之后执行另一个ajax调用?我最初走的是这条路线,但我对嵌套 js/ajax 调用的测试不起作用。可能是语法错误,请检查代码。

testajax.php(或testajax.html)文件中ajax调用XHR.responseText的测试代码为

<div id="name" >JAM  <div id="numa" > 
<br />
<br />text holder >>

<script type="text/javascript">
var pid=document.getElementById("numa").parentNode.id;

alert (pid);

document.getElementById('numa').innerHTML += 'append text>> ';

document.write(' docwrite');    
</script> 

</div>  
</div>
<br />
<br />ending text

如果我直接查看文件 testajax.php (或 testajax.html),我会看到

JAM


text holder >> (an alert window) append text>> docwrite


ending text

但是如果我对 testajax.php 文件进行 ajax 调用,我会看到的只是

JAM


text holder >> 


ending text

<script> </script>里面的代码标签在 ajax 调用后不运行

有人可以解释一下这个问题并提供解决方案吗?

TIA

最佳答案

如果不知道实际的代码和基于代码的答案是很难的。但是,这里有一个想法。

拿到三个名字后,返回页面并显示。然后,对于每个电话,在不同的 AJAX 调用中调用电话信息。我不确定 javascript 是否会彼此独立地调用所有三个电话,但这至少会显示所有 3 个姓名,然后每次显示一个电话信息。

<小时/>

编辑

工作流程:

  • Javascript 通过 ajax 向 php 发送名称。
  • PHP 返回 3 个名称给 js
  • js 将 3 个 div 附加到页面,每个 div 都有一个名称。
  • js 向 php 发出 3 个请求,每个请求发送 1 个名称。
  • php 将电话信息/其他信息返回给 js
  • js 获取信息并将其添加到相应的 div

关于php - 将 php 输出拆分为更小的输出(ajax、php)的策略(嵌套 ajax 调用、ajax 中的 ajax?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3358509/

相关文章:

php - 限制在一个页面上查看的线程数

php - prestashop 通过 url webservice api 创建和更新资源

javascript - AJAX URL 字符串在变量之间添加空格

javascript - 在 Ajax 调用的 $.post 简写上切换加载程序

php - JavaScript 到 PHP

javascript - 如何删除 dynamodb 列表中的条目?

javascript - 当我有多个图像时,绘制图像无法正常工作

ajax - Google 如何处理相对_escaped_fragment_ URL-s?

javascript - 如何使用 jQuery.ajax 将此 JSON 转换为在 HTML 中显示,为什么最后是 0?

php - 使用 Wordpress Infinite Scroll 加载产品后再次重新初始化 Woocommerce 脚本