请问,ajax post数据后,页面如何重新绑定数据?

a21999 2011-04-15 09:26:10
请问,ajax post数据后(已经插入成功),页面如何重新绑定数据?

现在是这样的,我一个aspx页面,用来显示数据绑定,页面上就一个Repeater,然后下面一个input button,点击input button,调用一个ashx文件插入数据到数据库,现在我就弄不明白了,我插入成功了,但是,aspx页面如何重新绑定数据呢?

前台js代码如下:
//这个是读取数据用的那个js,
     function ChaXun() {
h = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP");
var p = <%=Request.QueryString["id"] %>;
h.open("GET", '<%=Request.FilePath %>?id=' + p, true);
h.onreadystatechange = function () {
if (h.readyState == 4) {
if (h.status >= 200 && h.status < 300) {
document.getElementById("div2").innerHTML = h.responseText;
}
else {
document.getElementById("div2").innerHTML = "<h2>错误</h2>" + h.responseText;
}
}
}
h.send(null);
}

然后还有个插入的调用js叫做ChaRuData的JavaScript方法,就是post,和上面这个差不多。
现在我通过查询数据库,发现插入成功了。
如何让aspx页面上的Repeater重新绑定数据呢?或者说,如何在插入数据成功之后,通过调用这个查询的JavaScript方法来重新绑定?还是我的思路根本就是错的,不应该有2次ajax查询???


本人初学JavaScript,请各位大师指点指点,已经痛苦不堪了。。。
...全文
378 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
fz2550646 2012-05-31
  • 打赏
  • 举报
回复
唉,最近我也是在为ajax接收数据烦恼呀,总感觉你们都没回答到点上。
首先,Response.Write(List<data>.ToJsonString())这个吧,因为Ajax Post 调用后台方法,方法必须是static的,所以此法暂时不得行,ashx一般处理程序,Post就是想要直接调用后台方法无刷新处理数据,get访问ashx的话还行,
我想的是,执行成功之后,将数据返回,ajax接收数据就可以了,但是总觉得不对,
希望能得到解决呀
a21999 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zell419 的回复:]
引用 16 楼 a21999 的回复:

引用 15 楼 zell419 的回复:
你的input 应该就是普通的插入一条数据吧 。
从.ashx得到一个是否插入成功的标示 。
如果成功的话即改变你的html
(你现在是插入新的记录,也就是再加一行数据而已,这步其实就做个用户看的 )。

嗯,插入一行html数据,可以,但是要是用户这个时候再次插入一条呢?之前的那个,不就被替换了吗……
[/Quote]
如果可以,能否写个DEMO给我?谢谢。
a21999 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zell419 的回复:]
引用 16 楼 a21999 的回复:

引用 15 楼 zell419 的回复:
你的input 应该就是普通的插入一条数据吧 。
从.ashx得到一个是否插入成功的标示 。
如果成功的话即改变你的html
(你现在是插入新的记录,也就是再加一行数据而已,这步其实就做个用户看的 )。

嗯,插入一行html数据,可以,但是要是用户这个时候再次插入一条呢?之前的那个,不就被替换了吗……
[/Quote]
不行啊,我追加后,之前插入的一条就被替换了。。。
zell419 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 a21999 的回复:]

引用 15 楼 zell419 的回复:
你的input 应该就是普通的插入一条数据吧 。
从.ashx得到一个是否插入成功的标示 。
如果成功的话即改变你的html
(你现在是插入新的记录,也就是再加一行数据而已,这步其实就做个用户看的 )。

嗯,插入一行html数据,可以,但是要是用户这个时候再次插入一条呢?之前的那个,不就被替换了吗?
[/Quote]
再继续追加啊 。之前那条数据也是有效的 。
a21999 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 net_lover 的回复:]
参见类似的方法

使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现
[/Quote]

感谢孟神。。。但是,你那个只是查询啊,并不是查询和添加一起有的,不一样啊。。。
a21999 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zell419 的回复:]
你的input 应该就是普通的插入一条数据吧 。
从.ashx得到一个是否插入成功的标示 。
如果成功的话即改变你的html
(你现在是插入新的记录,也就是再加一行数据而已,这步其实就做个用户看的 )。
[/Quote]
嗯,插入一行html数据,可以,但是要是用户这个时候再次插入一条呢?之前的那个,不就被替换了吗?
zell419 2011-04-16
  • 打赏
  • 举报
回复
你的input 应该就是普通的插入一条数据吧 。
从.ashx得到一个是否插入成功的标示 。
如果成功的话即改变你的html
(你现在是插入新的记录,也就是再加一行数据而已,这步其实就做个用户看的 )。

yzf86211861 2011-04-16
  • 打赏
  • 举报
回复
楼上 都是大牛 最近 看不到 人生如梦了.
孟子E章 2011-04-16
  • 打赏
  • 举报
回复
a21999 2011-04-16
  • 打赏
  • 举报
回复
哪位大神能帮忙写个小小的demo?
阿非 2011-04-15
  • 打赏
  • 举报
回复
不需要重新绑定 repeater

提交数据 可以看成两部分

一是 提交数据到服务器端,用于数据持久化

另一个是 在DOM中的添加相关数据 用于显示
huangwenquan123 2011-04-15
  • 打赏
  • 举报
回复
插入成功后返回个状态确认已插入。之后就是看你Repeater用的是什么容器,append进去就可以!
  • 打赏
  • 举报
回复
上面if后面掉了括号
  • 打赏
  • 举报
回复
这会儿好像都去玩去了,平常这种问题抢不到啊,哈哈
  • 打赏
  • 举报
回复
你在服务端判断插入成功就行了,之后向客户端输出你刚才插入的那些数据:
Response.Write(List<data>.ToJsonString());
Response.End();

ToJsonString()是将实体类序列化为Json,格式类似这样:
[{"id":123, "name":"名字1"},[{"id":456, "name":"名字2"}]
之所以选择以Json返回,是因为JS操作起来比较方便,上面的一对{}即可以表示你写入的某个对象

客户端检测Ajax请求成功返回后,在回调函数里,将那些数据添加上去就好了

if (h.status >= 200 && h.status < 300) {
if(h.responseText)
var result = eval(h.responseText);
//result[0].name表示取上面第一条纪录的name字段,即“名字1"
document.getElementById("div2").innerHTML = result[0].name;
}
pt1314917 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 a21999 的回复:]
引用 2 楼 ds252743641 的回复:
插入成功后,刷新一下页面就行了
window.location.href = windou.location.href

你的页面是在load中绑定的数据吧

刷新?主要是不想让页面刷新,只是想异步更新数据绑定。
[/Quote]
插入后,获取最新数据,再返回。并解析显示。。
a21999 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ds252743641 的回复:]
插入成功后,刷新一下页面就行了
window.location.href = windou.location.href

你的页面是在load中绑定的数据吧
[/Quote]
刷新?主要是不想让页面刷新,只是想异步更新数据绑定。
a21999 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 darkluo2 的回复:]
还不入直接post当前页面,就可以刷新了
[/Quote]
post到当前页?那当前页如何同时处理插入和显示两种操作?
darkluo2 2011-04-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ds252743641 的回复:]
插入成功后,刷新一下页面就行了
window.location.href = windou.location.href

你的页面是在load中绑定的数据吧
[/Quote]
+1
ds252743641 2011-04-15
  • 打赏
  • 举报
回复
插入成功后,刷新一下页面就行了
window.location.href = windou.location.href

你的页面是在load中绑定的数据吧
加载更多回复(1)

62,046

社区成员

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

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

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

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