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 constructor和instanceof,JSOO中的一对欢喜冤家
May 25 Javascript
JavaScript 继承机制的实现(待续)
May 18 Javascript
获取body标签的两种方法
Oct 13 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
Apr 06 Javascript
浅谈JavaScript中null和undefined
Jul 09 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
Jun 21 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
Sep 11 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
vue路由拦截器和请求拦截器知识点总结
Nov 08 Javascript
基于Vue中的父子传值问题解决
Jul 27 Javascript
小程序实现文字循环滚动动画
Jun 14 Javascript
输入框跟随文字内容适配宽实现示例
Aug 14 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性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
php获取字段名示例分享
2014/03/03 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Javascript 去除数组的重复元素
2010/05/04 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
jQuery $.each遍历对象、数组用法实例
2015/04/16 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python异常处理总结
2014/08/15 Python
Python Requests 基础入门
2016/04/07 Python
python 计算文件的md5值实例
2017/01/13 Python
在Django中实现添加user到group并查看
2019/11/18 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
模具专业推荐信
2013/10/30 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
自荐书范文范例
2014/02/13 职场文书
家长写给孩子的评语
2014/04/18 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
导游词欢迎词
2015/02/02 职场文书
避暑山庄导游词
2015/02/04 职场文书
2016年国陪研修感言
2015/11/18 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js