ajax通讯之格式详解
前言:
ajax的出现,一定程度上改变了js的命运,同时也被广泛使用,而jq的兴起也大大降低了ajax的使用难度。虽然,jq的ajax方法使用起来十分便利,但是大部分开发人员也仅仅只是对其中的几个属性比较熟悉,当然也包括我。其中用的最多的是url、data、dataType、type、success、error和complete这几个,完整的代码格式如下:
$.ajax({
url: '/ajax/getInfo',
type: 'GET', //或POST
data: { name: 'jack' },
dataType: 'json',
success: function(d){},
error: function(e){},
complete: function(){}
});
这里我就不一一赘述上面每个属性的意思了,不知道的可以查询jq的API。
在大部分情况下基本上是不会出问题的,但是遇到一些特殊情况时,后台常常拿不到数据,这是为什么呢?
正文:
首先,我们修改一下传输到后台的数据格式
$.ajax({
url: '/ajax/getInfo',
type: 'POST', //这里以POST为例,GET请求的接收方式各不相同所以这里不进行讨论
data: {
name: 'jack' ,
friends: [{
name: 'rose',
sex: 'female'
},{
name: 'lily',
sex: 'female'
}]
},
dataType: 'json',
success: function(d){},
error: function(e){},
complete: function(){}
});
以下说明完全是基于使用框架的接收方式,不涉及自己编写的接收器(如果完全是自己手动编写代码接收的话任意格式数据均能接收)。
如果是以上形式的数据格式(这里我们将其称为“复杂数据格式”)在JAVA的Spring MVC框架中是无法接收的,同样Nodejs的Express框架也无法接收。
既然以上的复杂数据格式无法接收,那么我们就需要找到一种能够正确接收的方式。
经过查阅网上的资料我发现将json数据转换成json字符串,并且在ajax的配置项中加入contentType即可,如下:
var sendData =
{
name: 'jack' ,
friends: [{
name: 'rose',
sex: 'female'
},{
name: 'lily',
sex: 'female'
}]
};
$.ajax({
url: '/ajax/getInfo',
type: 'POST', //这里以POST为例,GET请求的接收方式各不相同所以这里不进行讨论
data: JSON.stringify(sendData),
contentType: "application/json;charset=utf-8", //默认的contentType为application/x-www-form-urlencoded; charset=utf-8
dataType: 'json',
success: function(d){},
error: function(e){},
complete: function(){}
});
总结:
如果使用简单的json格式进行POST请求时,我们不需要做什么特殊处理,但是如果要将复杂数据格式传给后台时,我们必须将数据转换成字符串,然后ajax配置项中加入contentType: "application/json;charset=utf-8"。
ajax通讯之格式详解的更多相关文章
- 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
转载:http://www.cnblogs.com/lifan3a/articles/6649970.html 以太网帧格式.IP数据报格式.TCP段格式+UDP段格式 详解 1.ISO开放系统有 ...
- java分享第十五天(log4j 格式详解)
log4j 格式详解 log4j.rootLogger=日志级别,appender1, appender2, -. 日志级别:ALL<DEBUG<INFO<WARN<ERRO ...
- php 序列化(serialize)格式详解
1.前言 PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PHP 手册中对这两个函数的说明仅限于如何使用,而对序列 ...
- Java字节码(.class文件)格式详解(一)
原文链接:http://www.blogjava.net/DLevin/archive/2011/09/05/358033.html 小介:去年在读<深入解析JVM>的时候写的,记得当时还 ...
- jQuery Pagination Ajax分页插件中文详解(摘)
jQuery Pagination Ajax分页插件中文详解 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxin ...
- Android查缺补漏(IPC篇)-- 款进程通讯之AIDL详解
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...
- PNG,JPEG,BMP,JIF图片格式详解及其对比
原文地址:http://blog.csdn.net/u012611878/article/details/52215985 图片格式详解 不知道大家有没有注意过网页里,手机里,平板里的图片,事实上,图 ...
- binlog之四:mysql中binlog_format模式与配置详解,binlog的日志格式详解
mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复 ...
- Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...
随机推荐
- ASP.NET Razor——ASP.NET Razor - C#代码语法
Razor 同时支持 C# (C sharp) 和 VB (Visual Basic). 主要的 Razor C# 语法规则 Razor 代码块包含在 @{ ... } 中 内联表达式(变量和函数)以 ...
- 论文笔记--Fast RCNN
很久之前试着写一篇深度学习的基础知识,无奈下笔之后发现这个话题确实太大,今天发一篇最近看的论文Fast RCNN.这篇文章是微软研究院的Ross Girshick大神的一篇作品,主要是对RCNN的一些 ...
- [原创]cocos2d-x研习录-第三阶 特性之物理引擎
游戏物理引擎是指在游戏中涉及物理现象的逻辑处理,它用于模拟现实世界的各种物理规律(如赛车碰撞.子弹飞行.物体掉落等),让玩家能够在游戏中有真实的体验. Cocos2D-x中支持Box2D和Chipmu ...
- Qt实用小技巧(转)
原博网址:http://www.cnblogs.com/feiyangqingyun/archive/2010/12/06/1898143.html 1.如果在窗体关闭前自行判断是否可关闭答:重新实现 ...
- JavaScript数据类型之隐式类型转换
JavaScript的数据类型分为七种,分别为null,undefined,boolean,string,number,object,symbol ( ECMAScript 2015新增).objec ...
- mvc路由,mvc区域
1.路由在进行匹配时,会默认匹配第一个路由信息 2.路由规则的{control}和{action}时不能改变的 3.路由规则可以中间字符可以随便定义,但是{control}和{action}必须使用一 ...
- mybatis 与 缓存
首先从配置文件说起,有个cacheEnabled的配置项,当设置为true时(默认就是true),Session就会用一个CachingExecutor来包装我们的Executor实例: public ...
- 关于databinding的细节
原文在此:http://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial 完整译文在此:http://www.cn ...
- 多种姿势破解centos OR readhat enterprises 7.X root密码
NO:1 启动系统,在grub界面按"e"键,进入编辑模式,找到以"linux16"开始的行,在行尾加入"rd.break",按" ...
- mvc中Url.RouteUrl或者Html.RouteLink实现灵活超链接,使href的值随路由名称或配置的改变而改变[bubuko.com]
mvc,超链接除了直接写在a标签的href内还可以使用路由规则来生成,这样在改变了路由规则或者路由名称时不用再去代码中更改href的值,而且还容易遗漏.借助Url.RouteUrl或者Html.Rou ...