我不知道搜索解决方案的正确术语。请提出一种策略,将 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/