JQuery以JSON方式提交数据到服务端示例代码


Posted in Javascript onMay 05, 2014

JQuery将Ajax数据请求进行了封装,从而使得该操作实现起来容易许多。以往我们要写很多的代码来实现该功能,现在只需要调用$.ajax()方法,并指明请求的方式、地址、数据类型,以及回调方法等。下面的代码演示了如何将客户端表单数据封装成JSON格式,然后通过JQuery的Ajax请求将数据发送到服务端,并最终将数据存储到数据库中。服务端定义为一个.ashx文件,事实上你可以将服务端定义为任何能接收并处理客户端数据的类型,如Web Service,ASP.NET Page,Handler等。

首先,在客户端,通过JavaScript脚本将页面表单数据封装成JSON格式。GetJsonData()函数完成了这一功能。然后我们通过$.ajax()方法将数据发送到服务端的RequestData.ashx。其中用到了JSON.stringify()方法,它可以将客户端发送的数据转换成JSON对象,详细的内容可以看这里https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

$("#btnSend").click(function() { 
$("#request-process-patent").html("正在提交数据,请勿关闭当前窗口..."); 
$.ajax({ 
type: "POST", 
url: "RequestData.ashx", 
contentType: "application/json; charset=utf-8", 
data: JSON.stringify(GetJsonData()), 
dataType: "json", 
success: function (message) { 
if (message > 0) { 
alert("请求已提交!我们会尽快与您取得联系"); 
} 
}, 
error: function (message) { 
$("#request-process-patent").html("提交数据失败!"); 
} 
}); 
}); function GetJsonData() { 
var json = { 
"classid": 2, 
"name": $("#tb_name").val(), 
"zlclass": "测试类型1,测试类型2,测试类型3", 
"pname": $("#tb_contact_people").val(), 
"tel": $("#tb_contact_phone").val() 
}; 
return json; 
}

再来看看服务端的代码,RequestData.ashx.
[Serializable] 
public class RequestDataJSON 
{ 
public int classid { get; set; } 
public string name { get; set; } 
public string zlclass { get; set; } 
public string pname { get; set; } 
public string tel { get; set; } 
} /// <summary> 
/// Summary description for RequestData 
/// </summary> 
public class RequestData : IHttpHandler 
{ 
public void ProcessRequest(HttpContext context) 
{ 
int num = 0; 
context.Response.ContentType = "application/json"; 
var data = context.Request; 
var sr = new StreamReader(data.InputStream); 
var stream = sr.ReadToEnd(); 
var javaScriptSerializer = new JavaScriptSerializer(); 
var PostedData = javaScriptSerializer.Deserialize<RequestDataJSON>(stream); 
tb_query obj = new tb_query(); 
obj.classid = PostedData.classid; 
obj.name = PostedData.name; 
obj.zlclass = PostedData.zlclass; 
obj.pname = PostedData.pname; 
obj.tel = PostedData.tel; 
obj.ip = context.Request.UserHostAddress.ToString(); 
obj.posttime = DateTime.Now.ToString(); 
try 
{ 
using (var ctx = new dbEntities()) 
{ 
ctx.tb_query.AddObject(obj); 
num = ctx.SaveChanges(); 
} 
} 
catch (Exception msg) 
{ 
context.Response.Write(msg.Message); 
} 
context.Response.ContentType = "text/plain"; 
context.Response.Write(num); 
} 
public bool IsReusable 
{ 
get 
{ 
return false; 
} 
} 
}

定义一个带有Serializable特征属性的类RequestDataJSON用来将客户端数据进行反序列化,从而获取到数据并存入数据库。上述代码中使用了EntityFramework,从而使得数据库的交互代码变得很简洁。返回结果有两种,对应ajax中的回调函数success()和error()。在success()回调函数中,如果返回结果的值大于0,则表示通过EntityFramework添加到数据库中的记录数;在error()回调函数中,返回结果则显示了失败的具体信息。

RequestData类继承了IHttpHandler接口,表明它是以同步的方式处理客户端请求。当然,你也可以将其改为继承IHttpAsyncHandler接口来处理异步请求,代码接口大同小异。

Javascript 相关文章推荐
JavaScript中的Window窗口对象
Jan 16 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
Feb 06 Javascript
jquery checkbox实现单选小例
Nov 27 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 Javascript
AngularJS实现网站换肤实例
Feb 19 Javascript
jQuery插件autocomplete使用详解
Feb 04 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
May 03 Javascript
Material(包括Material Icon)在Angular2中的使用详解
Feb 11 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
Sep 06 Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
javascript将16进制的字符串转换为10进制整数hex
Mar 05 Javascript
使用jQuery重置(reset)表单的方法
May 05 #Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
May 05 #Javascript
Js操作树节点自动折叠展开的几种方法
May 05 #Javascript
javascript中兼容主流浏览器的动态生成iframe方法
May 05 #Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
May 05 #Javascript
一个简单的jquery的多选下拉框(自写)
May 05 #Javascript
JavaScript日期时间格式化函数分享
May 05 #Javascript
You might like
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
jQuery 连续列表实现代码
2009/12/21 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
2014/09/17 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
python zip文件 压缩
2008/12/24 Python
Python MySQLdb Linux下安装笔记
2015/05/09 Python
python中abs&amp;map&amp;reduce简介
2018/02/20 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
2020/12/16 Python
python 如何在测试中使用 Mock
2021/03/01 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
历史学专业个人的自我评价
2013/10/13 职场文书
运动会邀请函范文
2014/02/06 职场文书
调解协议书
2014/04/16 职场文书
护理学专业求职信
2014/06/29 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
党建工作汇报材料
2014/12/24 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
Nginx HTTP跳转至HTTPS
2022/05/15 Servers
源码安装apache脚本部署过程详解
2022/09/23 Servers