日期:2014-05-16  浏览次数:20869 次

如何在ajax中刷新多个数据 - Web 开发 / Ajax
HTML code

<html>
<head><title>E1_2</title>
<script type="text/javascript">
var xmlHttp
function showHint()
{
    xmlHttp=GetXmlHttpObject()
    if(xmlHttp==null)
    {
        alert ("您的浏览器不支持AJAX!");
        return;
    }
    var C_url="gethint.asp";
    C_url=C_url+"?q="+"CAlarm_State";
    C_url=C_url+"&sid="+Math.random();
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",C_url,true);
    xmlHttp.send(null);
    var t=setTimeout("GetState()",1000)
}
function stateChanged()
{
    if(xmlHttp.readyState==4)
    {
        document.getElementById("C_State").src=xmlHttp.responseText;
    }
}
function GetXmlHttpObject()
{
    var xmlHttp=null;
    try
    {
        xmlHttp=new XMLHttpRequest();
    }
    catch(e)
    {
        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e)
        {
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}
</script>
</head>
<body onload=showHint()>
<form method=POST action=>
<table border="0" width="200" cellspacing="4" cellpadding="4">
<tr>
<td align="center" width="100"><font size="5">MTP-001</font></td>
<td> </td>
</tr>
<tr>
<td align="center" width="100">
<img border="0" id="H_State" width="24" height="24">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<img border="0" id="C_State" width="24" height="24"></td>
<td>
<p align="right">&nbsp; <input type="submit" value=RUN name=run>&nbsp;
<input type="submit" value=STOP name=stop></td>
</tr>
<tr>
<td align="center" width="100"><b><font size="5">H&nbsp;&nbsp;&nbsp; C</font></b></td>
<td align="center"><input type="submit" value=CLR name=clr></td>
</tr>
</table>
</form>
</html>


这里我想刷新是链接的两个图片 现在只能刷新一个 能实现刷新两个嘛 ?
上面的代码我也只实现了一个的刷新 ,想同时刷新两个数据需要如何去做呐 
等待指教

------解决方案--------------------
responseText在服务器可以设置成为json格式或者是xml格式

responseText 返回{src1:src1,src2:src2}这样的josn格式

document.getElementById("C_State1").src=xmlHttp.responseText.src1;
document.getElementById("C_State2").src=xmlHttp.responseText.src2;




------解决方案--------------------
探讨

我需要读底层寄存器中的值,那我想问下 用activex控件能实现嘛

------解决方案--------------------
3楼正解。

解决办法有很多,最理想的是用json格式返回数据,其次是用逗号分隔的地址,麻烦点就用XML。

需要后台gethint.asp这块改一下,前台stateChanged函数改一下,很简单的。
------解决方案--------------------
1.要在服务器端把两个数据放进去
比如,用换行符分割,按照C_State1,C_State2的顺序写入response

2.在客户端,把数据分割开然后付值。
如在你的函数中
function stateChanged()
{
if(xmlHttp.readyState==4)
{
//取得大数据块
var csvdata=xmlHttp.responseText;
//根据写入规则分割数据(这里使用换行符)
var LF = String.fromCharCode(10);
var lineData = csvdata.split(LF);
//根据写入顺序进行取得。
document.getElementById("C_State1").src=lineData[0];
document.getElementById("C_State2").src=lineData[1];