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 flash激活
Oct 19 Javascript
把textarea中字符串里含有的回车换行替换成&amp;lt;br&amp;gt;的javascript代码
Apr 20 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
JavaScript中property和attribute的区别详细介绍
Mar 03 Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
May 27 Javascript
jQuery使用getJSON方法获取json数据完整示例
Sep 13 Javascript
JavaScript实现简单的日历效果
Sep 25 Javascript
JS公共小方法之判断对象是否为domElement的实例
Nov 25 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
Vue动态获取width的方法
Aug 22 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
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP将URL转换成短网址的算法分享
2016/09/13 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
tagName的使用,留一笔
2006/06/26 Javascript
javascript下过滤数组重复值的代码
2007/09/10 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
jQuery中:visible选择器用法实例
2014/12/30 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
详解Django 时间与时区设置问题
2019/07/23 Python
使用python绘制二维图形示例
2019/11/22 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
招商专员岗位职责
2014/02/08 职场文书
小学见习报告
2014/10/31 职场文书
大学生团日活动总结
2015/05/06 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书