ajax:前后端json传值写法
ajax中的contentType有多种类型,默认是contentType=application/x-www-form-urlencoded;charset=utf-8;,如果设置contentType=application/json;charset=utf-8;那就会发生在后台无法通过context.Request.Form[]获取参数的情况,下面我就post、get两种方式进行梳理。
post传值
前台代码,data是json字符串:
function PostSendParams() {$.ajax({type: "post",url: "Handler1.ashx",contentType: "application/json;charset=utf-8;",data: "{ \"contentType\": \"application/json\", \"param2\": \"18\" }",dataType: "json",success:function(data) {alert("data=" + data);},error:function(error) {alert("error=" + error);}});
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
后台取值:
public void ProcessRequest(HttpContext context)
{try{#region Form取值(不行)//string contentType = context.Request.Form["contentType"].ToString();//string param2 = context.Request.Form["param2"].ToString();#endregion#region InputStream取值(可以)Stream stream = context.Request.InputStream;byte[] bytes = new byte[stream.Length];stream.Read(bytes, 0, bytes.Length);string parameters = Encoding.Default.GetString(bytes);JObject jObject = (JObject)JsonConvert.DeserializeObject(parameters);string contentType = jObject["contentType"].ToString();string param2 = jObject["param2"].ToString(); #endregion }catch (Exception ex){context.Response.Write("error");}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
前台代码,data是json对象:
function PostSendParams() {$.ajax({type: "post",url: "Handler1.ashx",contentType: "application/json;charset=utf-8;",data: { contentType: "application/json", param2: 18 },dataType: "json",success:function(data) {alert("data=" + data);},error:function(error) {alert("error=" + error);}});
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
后台取值:
public void ProcessRequest(HttpContext context)
{try{#region Form取值(不行)//string contentType = context.Request.Form["contentType"].ToString();//string param2 = context.Request.Form["param2"].ToString();#endregion#region InputStream取值(不行)Stream stream = context.Request.InputStream;byte[] bytes = new byte[stream.Length];stream.Read(bytes, 0, bytes.Length);string parameters = Encoding.Default.GetString(bytes);JObject jObject = (JObject)JsonConvert.DeserializeObject(parameters);string contentType = jObject["contentType"].ToString();string param2 = jObject["param2"].ToString(); #endregion }catch (Exception ex){context.Response.Write("error");}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
get传值
前台代码,data是json字符串:
function GetSendParams() {$.ajax({type: "get",url: "Handler1.ashx",contentType: "application/json;charset=utf-8;",data: "{ \"contentType\": \"application/json\", \"param2\": \"18\" }", dataType: "json",success: function (data) {alert("data=" + data);},error: function (error) {alert("error=" + error);}});
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
后台取值:
public void ProcessRequest(HttpContext context)
{try{#region QueryString取值(不行)//string contentType = context.Request.QueryString["contentType"].ToString();//string param2 = context.Request.QueryString["param2"].ToString();#endregion#region InputStream取值(不行)Stream stream = context.Request.InputStream;byte[] bytes = new byte[stream.Length];stream.Read(bytes, 0, bytes.Length);string parameters = Encoding.Default.GetString(bytes);JObject jObject = (JObject)JsonConvert.DeserializeObject(parameters);string contentType = jObject["contentType"].ToString();string param2 = jObject["param2"].ToString();#endregion}catch (Exception ex){context.Response.Write("error");}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
前台代码,data是json对象:
function GetSendParams() {$.ajax({type: "get",url: "Handler1.ashx",contentType: "application/json;charset=utf-8;",data: { contentType: "application/json", param2: 18 },dataType: "json",success: function (data) {alert("data=" + data);},error: function (error) {alert("error=" + error);}});
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
后台取值:
public void ProcessRequest(HttpContext context)
{try{#region QueryString取值(可以)string contentType = context.Request.QueryString["contentType"].ToString();string param2 = context.Request.QueryString["param2"].ToString();#endregion#region InputStream取值(不行)//Stream stream = context.Request.InputStream;//byte[] bytes = new byte[stream.Length];//stream.Read(bytes, 0, bytes.Length);//string parameters = Encoding.Default.GetString(bytes);//JObject jObject = (JObject)JsonConvert.DeserializeObject(parameters);//string contentType = jObject["contentType"].ToString();//string param2 = jObject["param2"].ToString();#endregion}catch (Exception ex){context.Response.Write("error");}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
总结
当contentType=application/json;charset=utf-8;时,post传值只有在data是json字符串后台用InputStream进行解析,才能获取参数;
当contentType=application/json;charset=utf-8;时,get传值只有在data是json对象后台用QueryString进行解析,才能获取参数。
ajax:前后端json传值写法相关推荐
- java前后端用json传值_前后端——json的传值与接收(springMvc)
原标题:前后端--json的传值与接收(springMvc) 前端传值: 通过将要传输的数据封装为json,然后再通过ajax接收: JSON.stringify(data) 1 后端接收值只需要通过 ...
- layui 传递前端请求_Layui数据表格 前后端json数据接收的方法
先上效果图: 前端数据表格: 编号菜单名称菜单路径菜单图标菜单子菜单操作 编辑 删除 js代码 $(function () { //注意:这里是数据表格的加载数据,必须写 layui.use(['ta ...
- Ajax前后端交互利器详解(一)
✍Ajax前后端交互利器
- Ajax 前后端数据交互
ajax 数据交互 今天又是奋斗的一天,行吧,来学习ajax ajax 数据交互 什么是ajax? ajax的`优势` ajax的使用 创建一个ajax对象 配置这个对象 发送请求 接受返回过来的数据 ...
- 【Demo】idea搭建SpringBoot和AJAX前后端数据交互
此文章详细介绍了idea 搭建springboot步骤,以及简易的前后端通过ajax进行简单数据交互代码,二话不说,进入正题. 第一步.idea开发工具搭建springboot框架 来看下整个项目结构 ...
- SpringMVC获取前端传来的json数据的四种方法(前后端json交互总结)
一.导包 一定要有 Jackson 的jar包依赖,就算有了fastjson,也要有Jackson包 <dependency><groupId>com.fasterxml.ja ...
- ajax前后端通信的头部消息之请求头与响应头
前后端在通信时,互相发送的消息包括头部消息和主体数据,而头部消息分为请求头和响应头两种. 请求头是前端发送,服务端获取. 响应头是服务端发送,前端获取. 设置请求头的规则: 请求头设置必须在open方 ...
- [JavaScript][AJAX] 前后端交互流程,ajax工作流程
目录 前后端交互流程 1.了解服务器 : 提供服务器的机器(计算机) 2.前端 访问服务器的几种方式 3.ajax技术 : 页面不跳转的情况下,向服务器请求数据 4.前后端交互三个流程 ajax工作流 ...
- http前后端传参写法
HTTP是常用的B/S架构的前后端交互协议,springboot对http接口的传参有以下几种参数接收方式 @RequestMapping(path = "/test")@Resp ...
- Web前端Javascript笔记(8)Ajax前后端交互
认识Ajax 全名Asynchronous Javascript and XML(异步JavaScript和XML),节省用户操作时间,提高用户体验,减少数据请求,传输获取数据.Ajax相当于前后台数 ...
最新文章
- 白盒测试方法之条件覆盖测试
- oauth最后的确认按钮_绕过GitHub的OAuth授权验证机制($25000)
- java打包dex_Android 命令行编译、打包生成apk文件
- Android --- 怎么去掉小数后面不必要的 0
- 【Java每日一题】20161123
- 智力测试题2——“五个人、五座房子”问题
- ZOJ 3932——Handshakes
- 【转】PHP面试题总结
- IPS不用添加service帐号进入linux使得管理主机能访问的方法
- windows server 2012 --安装远程桌面服务后无法远程的问题
- MATLAB信号处理仿真入门实验
- ubuntu装指定分区_ubuntu安装时候硬盘如何分区
- NoSQLBooster4MongoDB - 用SQL查询MongoDB
- 神经网络在控制中的作用,神经网络控制基本原理
- 《全栈性能测试修炼宝典 JMeter实战》目录—导读
- mtr--- 网络诊断工具
- 8年一线.NET开发程序员求职
- 985 211 PHP,部分985、211高校考研报录比汇总!
- 五面阿里拿下飞猪事业部offer,统统给你解决!
- 企业邮箱登录入口,邮箱登陆登录入口有哪些?
热门文章
- 微信 oauth授权2
- less--使用less.js将less文件转换成css
- ASP.NET Aries JSAPI 文档说明:AR.DataGrid
- 让两个Div并排显示
- AIR ANE(本机扩展)使用中的一些问题(Android平台)
- RabbitMQ消费端自定义监听(九)
- 列表、元组、字典、集合的定义与操作
- 基于OMCS的远程桌面实现远程控制地面站
- selenium+webdriver+java(基本小例子及初始化三种浏览器)---------------
- 可配置语法分析器开发纪事(二)——构造符号表