如何使用javascript从php脚本交互获取数据


How to interactively get data from php script using javascript

我有这个php脚本:

<?php
$arr = array(array("a","b"),array("c","d"));
qq($arr);
function qq($arr){
foreach($arr as $ar => $r){
//getting some work done
//sending the array $r (or values)to javascript
}
}
?>

是否可以在数组1之前使用javascript获取数组0的值

我目前得到的是这个js从stackoverflow:

<script type="text/javascript">
function q(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "http://127.0.0.0.1/q.php");
xmlhttp.send(null);
xmlhttp.onreadystatechange = callbackFunction;
function callbackFunction(){
if (xmlhttp.readyState == 4){
xml = xmlhttp.responseText;
document.getElementById("q").value = xml;
}}}
</script>

但它没有做我想要的(我想我错过了什么)。

我的html:

<input type="submit" onclick="q();" />
<div id="q"></div>
<div id="q1"></div>

是否可以把数组0的值在div(id=q),当数组1准备好了,把它的值在div(id=q1)

通过XMLHttpRequest()的"正常" HTTP请求不允许在单个请求中出现这种行为。

您可以使用以下选项:

服务器发送事件

上行
  • 它们非常容易构建。服务器上不需要任何特别的东西。只需谷歌服务器发送的事件,你会发现一些例子,他们是如何工作的。
  • 它们像任何其他http请求一样通过代理和防火墙,因为它是一个正常的http请求。

缺点
  • 不能在Internet Explorer上运行(?)
  • 如果某个代理缓存太多,
  • 可能无法实时更新。然而,在这种情况下,它仍然工作,它只是错过了实时通信

Websockets

上行

适用于所有最新的浏览器。使您能够进行全双工通信,并使您需要的一切正确。

缺点
  • 可能通过代理工作,也可能不通过代理工作,这取决于它们的配置。
  • 服务器上需要特殊扩展

(长)轮询

上行
  • 最佳兼容性(即使在旧浏览器中也能工作,没有代理或防火墙问题)

缺点
  • 创建大量开销,因为它为每个消息创建一个新的http连接
  • 你需要在某个地方存储中间结果,因为轮询请求来自不同的线程,而不是代码生成机制。

你能不能试试

if (xmlhttp.readyState == 4){
  xml = xmlhttp.responseText;
  document.getElementById('q').innerHTML=xml;
}}}