ASP.net 中用JQuery+AJAX+JSON 实现无刷新传参
来源:互联网 发布:阿里云实名认证多久好 编辑:程序博客网 时间:2024/04/30 03:39
总结背景:这个学期我们有数据库课设,我本来是比较擅长JSP的,结果老师指明不让用JAVA,我虽然对C#窗体编程较为熟练可是实在是不想再去学ASP,因为我肯定不会深入学下去,学什么MVC模型……(我jsp都学过了,还研究了不少)。
为了不学习ASP(虽然我懂 拖控件与 标签上加个 runat=“server”,可以直接操纵HTML元素,十分简单,可我就是不想接触ASP的知识),我从很早就策划绕过ASP的学习。凭我的经验我想到AJAX传参了,传数据当然还是JSON方便,于是蓄谋已久的计划终于在课设的时候用到了。由于其中用到了大量的js,jQuery知识,我还不太懂,所以做起来十分吃力。班里就是从没接触过C#凭借着拖控件也比我做的快。最后过了五天2:30睡7:00起的生活,终于在最后一天做完。
昨天我又做了JAVA的JSON传参,发现很不一样(真的是不一样),所以打算记下来。
介绍开始:
前台部分:(先贴代码)
function modifyStuAjax(para){var mg=null;//将要传回去的 js 对象(Object)的结果para = JSON.stringify(para); //将传来的参数(js 对象)解析成JSON对象$.ajax({ //jQuery的AJAX传参type: "POST", //post方法url: "../../aspx/student.aspx/modifyStu", //访问请求处理的函数data: para, //要传的参数contentType: "application/json;charset=utf-8",// 应该是请求的头格式,指明传向后台的是JSON格式的数据dataType: "json", //后台返回JSON格式的字符串async:false, //不写也行,写上是为了同步,而不是异步执行success: function (msg) { mg = JSON.parse(msg.d); //成功后msg得到后台传来的JSON格式的字符串,解析成js 对象},error: function (xmlReq, err, c) { ShowDIV("request fail,可能您未登录"); //失败后处理,alert也行}});return mg;}我所写的并不是一定都要,但是我之前试过,如果去掉其中某一个部分,都无法正常运行。 值得注意的是msg.d,这个d是被自动加上去的,chrome的network可以看到形如{“d":{ 这里是你真正处理后返回的JSON对象 }}的数据,做过JAVA后我发现可能是ASP自己给加的,有待考证,希望有人指点。
必须有的:JSON.stringify,JSON.parse,contentType: "application/json;charset=utf-8",dataType: "json",(当然不用JSON可写成text等),data也必须是JSON类型的,如果不传参的话,也要写个“{‘a':'a'}”这样的JSON格式参数。
其中URL里面倒数第一个’/‘后面的是要访问的方法(在aspx.cs中可以访问需要参数的,也一样这样写),它前面的是cs对应的ASPX页面。
顺便说一下 他们关联靠的是 ASPX最上面的<%@ Page Language="C#" AutoEventWireup="true" CodeFile="searchstudent.aspx.cs" Inherits="page_student_searchstudent" %>
前台调用:
var para={stu:{sno:modifysno,sname:sname,ssex:ssex,sphone:sphone,snation:snation,smid:smid,sclass:sclass}};//alert(21);var msg=modifyStuAjax( para );
para要写成js对象的形式。这样你会问,后台该怎么得到这些参数呢?这个后面讲。还有得到数据的处理,也就不说了,那是js的知识。
前台结束。
后台部分:
个人认为C#的 Newtonsoft.Json 处理JSON数据比较方便(还有一个.net 3.0以上自带的 解析器,可以直接解析对象,我说的这个处理器数组,list与对象不很方便,但是我会用),所以首先下载 Newtonsoft.Json的dll然后引入项目中。
我先把前后台传参的事说一下。
后台给前台传参就是返回一个string,只不过是json格式的。前台给后台传参,也就是给访问后台的静态函数传参数。后台定义这个参数的名字,必须和前台传来的JSON,数据对应上,这个实在讲不清楚,反正记住 这时ASP自己映射的,名字取得一样才可以映射过去。 比如我上面的 参数 后台的 代码形如
[WebMethod]
public static string modifyStu(strudent stu){}
student 是我自己定义的class,里面有字段 sno,sname,ssex……现在总该知道怎么自动传参了吧。 还有如果传两个参数 前台就要类似
{ pa1:{},pa2:{} }
后面的就是我自己总结给自己看的Newtonsoft.Json使用就不说明了。
[WebMethod] public static string gainDormShowInfo(){ dormDao dormdao = new dormDao(); List<bd_showinfo> bdinfos =dormdao.gainDormShowInfo(); StringWriter sw = new StringWriter(); JsonWriter writer = new JsonTextWriter(sw); writer.WriteStartObject(); writer.WritePropertyName("rt"); if (bdinfos == null) { writer.WriteValue("false"); } else { writer.WriteStartArray(); building bd; foreach (bd_showinfo binf in bdinfos) { bd = binf.Bd; writer.WriteStartObject(); writer.WritePropertyName("bd"); writer.WriteStartObject(); writer.WritePropertyName("bno"); writer.WriteValue(bd.Bno); writer.WritePropertyName("bhomenum"); writer.WriteValue(bd.Bhomenum); writer.WritePropertyName("bfloornum"); writer.WriteValue(bd.Bfloornum); writer.WritePropertyName("bbegintime"); writer.WriteValue(bd.Bbegintime); writer.WriteEndObject(); writer.WritePropertyName("gnums"); writer.WriteValue(binf.Gnums); writer.WritePropertyName("bnums"); writer.WriteValue(binf.Bnums); writer.WritePropertyName("gdorms"); writer.WriteValue(binf.Gdorms); writer.WritePropertyName("bdorms"); writer.WriteValue(binf.Bdorms); writer.WriteEndObject(); } writer.WriteEndArray(); } writer.WriteEndObject(); writer.Flush(); string jsonText = sw.GetStringBuilder().ToString(); return jsonText; }
上面产生的JSON 包括的数组,对象里面嵌套对象,我研究了好一会而才写出的。
这是ASP的后面我要总结JSP的,不是很一样。
转载请注明出处,谢谢。
- ASP.net 中用JQuery+AJAX+JSON 实现无刷新传参
- asp.net :使用jquery 的ajax +WebService+json 实现无刷新去后台值
- asp.net中利用Jquery+Ajax+Json实现无刷新分页
- asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)
- Asp.net利用JQuery AJAX实现无刷新评论
- asp.net mvc基于jQuery+Ajax实现无刷新分页
- JSON+Ajax+JQuery实现无刷新
- ASP.NET Ajax 实现无刷新分页
- ASP.NET中用XMLHTTP实现DropDownList无刷新联动
- ASP.NET+Ajax+JQuey+Json数据+存储过程实现无刷新分页
- Asp.Net分页方法:JQuery插件实现Ajax无刷新分页、AspNetPager分页控件实现分页
- ASP.NET C#+Ajax+json无刷新分页参考
- Jquery+JSon实现的Asp.net无刷新分页控件
- jquery+ajax+asp.net 页面无刷新效果
- asp.net分页和 jquery ajax 无刷新分页
- Struts2+jquery+ajax+json实现无刷新登陆验证.
- jqurey + json + 存储过程 + asp.net实现无刷新分页
- AspNetPager + GridView + ASP.NET AJAX 分页无刷新实现
- android采用SurfaceView实现文字滚动效果
- 备忘录模式与命令模式的结合
- js将字符串中所有反斜杠\替换成正斜杠/
- 租用游艇问题
- 云主机 - 如何部署WordPress到Amazon云端
- ASP.net 中用JQuery+AJAX+JSON 实现无刷新传参
- Mahout源码目录说明
- myeclipse java中 开发快捷键
- 如何防止ISE综合时信号不被优化掉
- 代码格式化
- Spark开发指南(0_8_1中文版)
- 利用LruCache为GridView异步加载大量网络图片完整示例
- 查找shell所在的位置
- c++转学java的笔记