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自动判断浏览器分辨率的代码
Jan 28 Javascript
YUI模块开发原理详解
Nov 18 Javascript
js获取光标位置和设置文本框光标位置示例代码
Jan 09 Javascript
Node.js 学习笔记之简介、安装及配置
Mar 03 Javascript
JavaScript统计网站访问次数的实现代码
Nov 18 Javascript
浅析JSONP技术原理及实现
Jun 08 Javascript
JS中如何实现复选框全选功能
Dec 19 Javascript
js实现延迟加载的几种方法
Apr 24 Javascript
ES5 ES6中Array对象去除重复项的方法总结
Apr 27 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
Jul 24 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
Jun 18 jQuery
vue-loader中引入模板预处理器的实现
Sep 04 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实例分享之html转为rtf格式
2014/06/02 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
PHP中的数组处理函数实例总结
2016/01/09 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
JavaScript回调函数callback用法解析
2020/01/14 Javascript
python通过yield实现数组全排列的方法
2015/03/18 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
python代码xml转txt实例
2020/03/10 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
Python socket服务常用操作代码实例
2020/06/22 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
中职生自荐信范文
2014/06/15 职场文书
代收款委托书范本
2014/10/01 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
2014年仓库工作总结
2014/11/20 职场文书
地陪导游欢迎词
2015/01/26 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
员工辞职信范文大全
2015/05/12 职场文书
篮球赛新闻稿
2015/07/17 职场文书
图书馆义工感想
2015/08/07 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS