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传值写法相关推荐

  1. java前后端用json传值_前后端——json的传值与接收(springMvc)

    原标题:前后端--json的传值与接收(springMvc) 前端传值: 通过将要传输的数据封装为json,然后再通过ajax接收: JSON.stringify(data) 1 后端接收值只需要通过 ...

  2. layui 传递前端请求_Layui数据表格 前后端json数据接收的方法

    先上效果图: 前端数据表格: 编号菜单名称菜单路径菜单图标菜单子菜单操作 编辑 删除 js代码 $(function () { //注意:这里是数据表格的加载数据,必须写 layui.use(['ta ...

  3. Ajax前后端交互利器详解(一)

    ✍Ajax前后端交互利器

  4. Ajax 前后端数据交互

    ajax 数据交互 今天又是奋斗的一天,行吧,来学习ajax ajax 数据交互 什么是ajax? ajax的`优势` ajax的使用 创建一个ajax对象 配置这个对象 发送请求 接受返回过来的数据 ...

  5. 【Demo】idea搭建SpringBoot和AJAX前后端数据交互

    此文章详细介绍了idea 搭建springboot步骤,以及简易的前后端通过ajax进行简单数据交互代码,二话不说,进入正题. 第一步.idea开发工具搭建springboot框架 来看下整个项目结构 ...

  6. SpringMVC获取前端传来的json数据的四种方法(前后端json交互总结)

    一.导包 一定要有 Jackson 的jar包依赖,就算有了fastjson,也要有Jackson包 <dependency><groupId>com.fasterxml.ja ...

  7. ajax前后端通信的头部消息之请求头与响应头

    前后端在通信时,互相发送的消息包括头部消息和主体数据,而头部消息分为请求头和响应头两种. 请求头是前端发送,服务端获取. 响应头是服务端发送,前端获取. 设置请求头的规则: 请求头设置必须在open方 ...

  8. [JavaScript][AJAX] 前后端交互流程,ajax工作流程

    目录 前后端交互流程 1.了解服务器 : 提供服务器的机器(计算机) 2.前端 访问服务器的几种方式 3.ajax技术 : 页面不跳转的情况下,向服务器请求数据 4.前后端交互三个流程 ajax工作流 ...

  9. http前后端传参写法

    HTTP是常用的B/S架构的前后端交互协议,springboot对http接口的传参有以下几种参数接收方式 @RequestMapping(path = "/test")@Resp ...

  10. Web前端Javascript笔记(8)Ajax前后端交互

    认识Ajax 全名Asynchronous Javascript and XML(异步JavaScript和XML),节省用户操作时间,提高用户体验,减少数据请求,传输获取数据.Ajax相当于前后台数 ...

最新文章

  1. 白盒测试方法之条件覆盖测试
  2. oauth最后的确认按钮_绕过GitHub的OAuth授权验证机制($25000)
  3. java打包dex_Android 命令行编译、打包生成apk文件
  4. Android --- 怎么去掉小数后面不必要的 0
  5. 【Java每日一题】20161123
  6. 智力测试题2——“五个人、五座房子”问题
  7. ZOJ 3932——Handshakes
  8. 【转】PHP面试题总结
  9. IPS不用添加service帐号进入linux使得管理主机能访问的方法
  10. windows server 2012 --安装远程桌面服务后无法远程的问题
  11. MATLAB信号处理仿真入门实验
  12. ubuntu装指定分区_ubuntu安装时候硬盘如何分区
  13. NoSQLBooster4MongoDB - 用SQL查询MongoDB
  14. 神经网络在控制中的作用,神经网络控制基本原理
  15. 《全栈性能测试修炼宝典 JMeter实战》目录—导读
  16. mtr--- 网络诊断工具
  17. 8年一线.NET开发程序员求职
  18. 985 211 PHP,部分985、211高校考研报录比汇总!
  19. 五面阿里拿下飞猪事业部offer,统统给你解决!
  20. 企业邮箱登录入口,邮箱登陆登录入口有哪些?

热门文章

  1. 微信 oauth授权2
  2. less--使用less.js将less文件转换成css
  3. ASP.NET Aries JSAPI 文档说明:AR.DataGrid
  4. 让两个Div并排显示
  5. AIR ANE(本机扩展)使用中的一些问题(Android平台)
  6. RabbitMQ消费端自定义监听(九)
  7. 列表、元组、字典、集合的定义与操作
  8. 基于OMCS的远程桌面实现远程控制地面站
  9. selenium+webdriver+java(基本小例子及初始化三种浏览器)---------------
  10. 可配置语法分析器开发纪事(二)——构造符号表