Ajax 原理的东西,大家来帮助看看。

shclhs 2008-03-29 11:48:18
这段时间有空,就想学习一下ajax的原理,于是用asp.net想写一个。但是有点问题。需要大家的帮助。
我在页面上放了两个button和两个textbox,一个button使用ajax,一个使用asp.net原来的机制,我发现在第一次我点那个使用ajax button的时候,相对应得textbox显示正常的值,但是再点就一直不变化了,但是使用asp.net机制的button却工作正常。我贴出代码,让大家帮我看看为什么.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>

<script type="text/jscript">
var xhr=null;

function CreateXMLHttp()
{
//尝试以IE方式创建该对象
try
{
xhr= new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xhr= new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e2)
{
xhr = null;
}
}

//如果仍然没有建立xmlHttp,则以非Microsoft 的方式创建该对象
if ( xhr==null && typeof XMLHttpRequest != 'undefined')
{
xhr= new XMLHttpRequest();
}
}

function getZipData ( zipCode )
{
//每次使用前,都要先创建一个XMLHttpRequest实例
CreateXMLHttp();
if(xhr==null) return;

xhr.onreadystatechange= processZipData; //状态改变时触发
xhr.open("GET","Default.aspx?zipcode="+ zipCode, false);
xhr.send(); //最后,调用send()将请求发送到服务器
}


function processZipData ( )
{
//解析应答的回调函数 (TEXT)
if(xhr.readyState ==4)
{
if(xhr.status==200)
{
//以字符串方式返回
var rtdata=xhr.responseText;

//如果有多个值,则以逗号分隔(根据实际返回决定)
var v=rtdata.split(',') ; //转换成数组v,取值方式 v[0] …
//取得返回值根据自已的情况处理

document.getElementById("Text1").innerText = v[0];
}
}
}

</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<input onclick="getZipData(this.value)" type="button" name="zip" style="width: 57px;
height: 23px" value="123" />
<input id="Text1" type="text" /></div>
<div id="div2">
</div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</form>
</body>
</html>










using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request["zipcode"] != null)
{
string szType = Request["zipcode"];
string szRet = "返回值" + HelpClass.i++.ToString();
Response.Write(szRet);
Response.End();
}
}

protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = "返回值" + HelpClass.i++.ToString();
}
}

public class HelpClass
{
public static int i = 1;
}
...全文
85 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rtsp 2008-03-29
  • 打赏
  • 举报
回复
查一下,如果每次都能获得到数据,但数据都一样,那考虑在url里加个随机数,如:

xhr.open("GET","Default.aspx?zipcode="+ zipCode + "&random="+Math.random(), false);
shclhs 2008-03-29
  • 打赏
  • 举报
回复
如果大家有什么好的sample,共享一下啊,谢谢,不过最好不要是使用什么其他框架的ajax
rtsp 2008-03-29
  • 打赏
  • 举报
回复
在得到结果后把xhr.responseText打出来看看,alert(xhr.responseText);

这种“ajax”没搞过- -!!!
hearyone 2008-03-29
  • 打赏
  • 举报
回复
正在学习呢!呵呵

UP
shclhs 2008-03-29
  • 打赏
  • 举报
回复
放到session里?我把这个i++改成取服务器时间也不新的。因该不是你说的这个问题。我觉得你自己可以试试。
rtsp 2008-03-29
  • 打赏
  • 举报
回复
public class HelpClass
{
public static int i = 1;
}
这个东西的问题,把i放到session里试试
noflyzone 2008-03-29
  • 打赏
  • 举报
回复
这是原理吗?这不是应用吗?
shclhs 2008-03-29
  • 打赏
  • 举报
回复
COOL
谢谢,解决了
rtsp 2008-03-29
  • 打赏
  • 举报
回复
加上随机参数只是用来避免读取default.aspx这个页面时读取了缓存里的东西
shclhs 2008-03-29
  • 打赏
  • 举报
回复
我在服务器端就没用那个参数。

62,039

社区成员

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

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

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

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