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 利用Cookie记录用户登录信息
Dec 08 Javascript
jQuery LigerUI 使用教程表格篇(1)
Jan 18 Javascript
jQuery判断密码强度实现思路及代码
Apr 24 Javascript
jQuery对指定元素中指定字符串进行替换的方法
Mar 17 Javascript
jQuery插件echarts去掉垂直网格线用法示例
Mar 03 Javascript
Web前端框架Angular4.0.0 正式版发布
Mar 28 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
Mar 08 Javascript
express中static中间件的具体使用方法
Oct 17 Javascript
微信小程序动态添加和删除组件的现实
Feb 28 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 19 Javascript
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
使用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中删除变量时unset()和null的区别分析
2011/01/27 PHP
php的大小写敏感问题整理
2011/12/29 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
javascript实现下雨效果
2017/03/27 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
彻底解决Python包下载慢问题
2020/11/15 Python
python之随机数函数的实现示例
2020/12/30 Python
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
小学先进集体事迹材料
2014/05/31 职场文书
球队口号
2014/06/18 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
教师节班会主持词
2015/07/06 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
公司晚会主持词
2019/04/17 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python