能不能看看这个Ajax为什么没有效果

egonzou 2005-11-10 10:32:53
AjaxTextClient.aspx的html
<HTML>
<HEAD>
<script language="JavaScript">
function AjaxMap()
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlHttp = new XMLHttpRequest();
}

xmlHttp.onreadystatechange = function()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
var data = xmlHttp.responseText;
document.body.innerHTML += data;
}
}
}
xmlHttp.open("GET","AjaxTestServer.aspx?testid=1");
xmlHttp.send(null);
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<IMG style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 0px" alt="" src="images/map.jpg"
onmousemove="AjaxMap();">
</form>
</body>
</HTML>

AjaxTextServer.aspx.cs内容的主体部分:

private void Page_Load(object sender, System.EventArgs e)
{
string testid = "";
if (Request.QueryString.Keys.Count > 0 && Request.QueryString["testid"].Length > 0)
{
testid = Request.QueryString["testid"];
}

if(testid=="1")
{
//将XML生成DataSet
DataSet ds = GetPortData("PortParameter.xml");
DataSet ds1 = GetPortData("ShipDeclare.xml");
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
int tt=0;
int oo=0;
int ii=0;
int yy =0;
int xx =0;
for(int j=0;j<ds1.Tables[0].Rows.Count;j++)
{
if(ds1.Tables[0].Rows[j][1].ToString()==ds.Tables[0].Rows[i][1].ToString())
{
switch(ds1.Tables[0].Rows[j][2].ToString())
{
case "AA":
oo++;
Response.Write("<img src=images/ship_g.gif alt='AAA:"+ds1.Tables[0].Rows[j][0].ToString()+" AAAA:"+ds1.Tables[0].Rows[j][2].ToString()+" AAAAA:"+ds1.Tables[0].Rows[j][3].ToString()+"' style='Z-INDEX: 102; LEFT: "+(int.Parse(ds.Tables[0].Rows[i][2].ToString())+25-xx)+"px; POSITION: absolute; TOP: "+(int.Parse(ds.Tables[0].Rows[i][3].ToString())+yy)+"px'>");
break;
case "BB":
ii++;
Response.Write("<img src=images/ship_r.gif alt='BBB:"+ds1.Tables[0].Rows[j][0].ToString()+" BBBB:"+ds1.Tables[0].Rows[j][2].ToString()+" BBBBB:"+ds1.Tables[0].Rows[j][3].ToString()+"' style='Z-INDEX: 102; LEFT: "+(int.Parse(ds.Tables[0].Rows[i][2].ToString())+25-xx)+"px; POSITION: absolute; TOP: "+(int.Parse(ds.Tables[0].Rows[i][3].ToString())+yy)+"px'>");
break;
}
tt++;
yy+=15;
xx+=2;
}
}
Response.Write("<img src=images/dot.gif alt='"+ds.Tables[0].Rows[i][1].ToString()+" TTT:"+tt.ToString()+" OOO:"+oo.ToString()+" III:"+ii.ToString()+"' style='Z-INDEX: 102; LEFT: "+ds.Tables[0].Rows[i][2].ToString()+"px; POSITION: absolute; TOP: "+ds.Tables[0].Rows[i][3].ToString()+"px'>");
}
ds.Clear();
ds1.Clear();
}
}


AjaxTextClient.aspx页面首次运行时,鼠标移到图片<IMG style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 0px" alt="" src="images/map.jpg"
onmousemove="AjaxMap();">上会出现AjaxTextServer.aspx中的Response.Write结果,但当XML文件的内容改变后,再将鼠标移到图片<IMG style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 0px" alt="" src="images/map.jpg"
onmousemove="AjaxMap();">上,却没有变化了,玩Ajax的高手能不能看看是什么原因?
...全文
224 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
egonzou 2005-11-11
  • 打赏
  • 举报
回复
谢谢二位,问题已解决:
古道热肠:
由于testid一直都等于"1",会不会本来就是同样的数据呢?
kandyasp:
你试着在你的xml(aspx)文件后加一些参数什么的,也就是不停的改变你的文件访问地址
kandyasp 2005-11-11
  • 打赏
  • 举报
回复
我告诉你为什么,因为你调用的文件在你的浏览器缓存里,你试着在你的xml文件后加一些参数什么的,也就是不停的改变你的文件访问地址,比如我以前做的xxxx.aspx?sTime=20051111093100
后面跟个变化的字符串,这样每次都刷新的,这个问题我2年前就遇到了。
egonzou 2005-11-11
  • 打赏
  • 举报
回复
我的PortParameter.xml数据做了更改啊,当我直接刷新ajaxtextserver.aspx?testid=1时数据会改变
swordragon 2005-11-11
  • 打赏
  • 举报
回复
那就是AjaxTextServer.aspx.cs中的问题了:

根据你的代码
if(testid=="1")
{
//将XML生成DataSet
DataSet ds = GetPortData("PortParameter.xml");
Response.Write(ds.Table[0].Rows[0][0].ToString());
ds.Clear();
}
由于testid一直都等于"1",会不会本来就是同样的数据呢?
egonzou 2005-11-11
  • 打赏
  • 举报
回复
用alert(data);显示的是老数据
swordragon 2005-11-10
  • 打赏
  • 举报
回复
你确认ds.Table[0].Rows[0][0]中有数据?
egonzou 2005-11-10
  • 打赏
  • 举报
回复
算了,把代码精简一下,这样看起来就不头大了
AjaxTextClient.aspx的html
<HTML>
<HEAD>
<script language="JavaScript">
function AjaxMap()
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlHttp = new XMLHttpRequest();
}

xmlHttp.onreadystatechange = function()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
var data = xmlHttp.responseText;
document.body.innerHTML += data;
}
}
}
xmlHttp.open("GET","AjaxTestServer.aspx?testid=1");
xmlHttp.send(null);
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<IMG style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 0px" alt="" src="images/map.jpg"
onmousemove="AjaxMap();">
</form>
</body>
</HTML>

AjaxTextServer.aspx.cs内容的主体部分:

private void Page_Load(object sender, System.EventArgs e)
{
string testid = "";
if (Request.QueryString.Keys.Count > 0 && Request.QueryString["testid"].Length > 0)
{
testid = Request.QueryString["testid"];
}

if(testid=="1")
{
//将XML生成DataSet
DataSet ds = GetPortData("PortParameter.xml");
Response.Write(ds.Table[0].Rows[0][0].ToString());
ds.Clear();

}
}
egonzou 2005-11-10
  • 打赏
  • 举报
回复
不要光学习啊,能不能帮帮忙啊
Ritt 2005-11-10
  • 打赏
  • 举报
回复
learning
aspxcss 2005-11-10
  • 打赏
  • 举报
回复
哇 ,深奥.帮顶.
swordragon 2005-11-10
  • 打赏
  • 举报
回复
程序上没有任何问题的。

你试着把
document.body.innerHTML += data;
换为
alert(data);

确认一下data是否是最新的?
如果data是最新的,可能就和document.body.innerHTML有关系了。
egonzou 2005-11-10
  • 打赏
  • 举报
回复
有数据,首次操作有效果,但数据改变后效果出不来
当数据改变时,刷新ajaxtestserver.aspx?testid=1会显示新数据,
而在ajaxtestclient.aspx页面触动事件时还是显示原来的数据,而不是新的数据

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧