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中的相等与不等运算
Apr 25 Javascript
js中的referrer返回上一页使用介绍
Sep 26 Javascript
jQuery获得子元素个数的方法
Apr 14 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
Mar 07 Javascript
js剪切板应用clipboardData实例解析
May 29 Javascript
JavaScript操作表单实例讲解(上)
Jun 20 Javascript
bootstrapfileinput实现文件自动上传
Nov 08 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
React Native 使用Fetch发送网络请求的示例代码
Dec 02 Javascript
微信小程序自定义组件之可清除的input组件
Jul 17 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 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执行.SQL文件
2013/07/05 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
JavaScript中获取元素索引的函数
2010/09/10 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
Vue框架之goods组件开发详解
2018/01/25 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
python将unicode和str互相转化的实现
2020/05/11 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
同程旅游英文网站:LY.com
2018/11/13 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
琳达·法罗眼镜英国官网:Linda Farrow英国
2021/01/19 全球购物
恐龙的灭绝教学反思
2014/02/12 职场文书
2014年派出所工作总结
2014/11/21 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python