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 相关文章推荐
js Function类型
Dec 04 Javascript
jquery 插件学习(六)
Aug 06 Javascript
无缝滚动js代码通俗易懂(自写)
Jun 19 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
浅谈JavaScript函数的四种存在形态
Jun 08 Javascript
Bootstrap实现登录校验表单(带验证码)
Jun 23 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
Jan 03 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 Javascript
JS学习笔记之原型链和利用原型实现继承详解
May 29 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
H5 js点击按钮复制文本到粘贴板
Nov 19 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 危险函数解释 分析
2009/04/22 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
学习ExtJS 访问容器对象
2009/10/07 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
javascript创建createXmlHttpRequest对象示例代码
2014/02/10 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
python常规方法实现数组的全排列
2015/03/17 Python
python里dict变成list实例方法
2019/06/26 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Matplotlib中rcParams使用方法
2021/01/05 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
女性时尚网购:Chic Me
2019/07/30 全球购物
批评与自我批评材料
2014/02/15 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
教师职业道德事迹材料
2014/08/18 职场文书
党员争先创优承诺书
2015/01/20 职场文书
听证通知书
2015/04/24 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫