我学.Net不久,最近正在研究ajax,以前也实现过简单的无刷新,不过不是ajax,我一般是这么做的,先在aspx.cs文件中声明一个protected string str="",然后把前台所需要的数据以一定的格式拼接成一个长字符串保存在str中,或者声明多个protected变量,在前台js中通过类似var s = "<%=str %>"的方式取得相关数据;通过js解析并动态添加到html中,也能实现无刷新,请问各位大牛,这样做是否符合规范,相比于ajax有哪些缺点,是否有效率或其他方面的隐患
所谓“无刷新”,是指页面某个部分发生变动时不需要更新页面上其它没有变动的部分。
你的做法仍然需要重新加载整个页面。
js的做法是把整个页面分成多个部分,每个部分可以通过独立的请求来得到更新的数据,这样当某个部分变动时,可以只请求此部分数据并在当前页面更新此部分。
有点模糊,那是不是不通过类似ajax的机制或者submit就无法向服务器发出请求了呢,因为我感觉只要我请求发出去了,回传回来的数据如果通过js中的变量接收的话,数据应该是存在内存中,应该可以不需要刷新整个页面才对啊
@学无止尽井: 浏览器的工作模式就这样的,在一个已经显示在浏览器的页面中,只能通过ajax的方式来发送独立于页面的请求,或者重新提交整个页面。
你的理解有点偏差,我们谈的是你的页面中的某个部分的数据需要更新,这里说的更新就是指这部分的数据必须要从服务器去获取。如果你的数据已经存在于内存中了,那就没有所谓的更新问题,你这个页面放1万年,内存中的数据仍然是不变,根本不涉及到是否刷新的问题,又何谈部分刷新呢?
@Launcher: 可以这样理解吗,ajax是和浏览器分开的,浏览器负责显示,ajax负责请求,他们相当于是两个人,而我的那种做法仍然只是一个人既请求又显示
@学无止尽井: 可以这么理解。具体的细节还有待商榷。我们以买衣服为例,你的方式相当于如果用户对衣服的帽子不满意,你需要把整套衣服脱下来都发回给商户,商户换了个帽子后再把整套衣服送给你,然后你再重新穿上;部分刷新的模式是这样,你对帽子不满意,你只需要把帽子脱下来发回给商户,而不用把衣服和裤子也脱下来,商户把新的帽子送给你,你直接戴上新的帽子,不用再重新穿衣服、裤子。
你这样好像不是无刷新吧,只是有js添加html而已,一般的无刷新是在页面载入完成后通过js请求服务器,并更新页面的局部或全部内容。实现的方法有很多种,有直接拼字符串的,也有用ascx控件的,你可以在园子里找找。
我只是觉得我这样取数据代码写起来比较方便,而且感觉也是动态加上去的,所以没想那么多,就一直这样用了,假如不考虑刷不刷新的,这样做有什么弊端吗?
jquery 的 ajax才是王道
在前台js中通过类似var s = "<%=str %>"的方式取得相关数据;
这种方式是在页面还在服务器端的时候,直接产生的。