学生管理系统MVC模式设计心得:

jquery .ajax提交data数据格式

jquery 的Ajax方法提交数据,但是是多个参数,具体data的格式如下:

data提交的数据类型为:Object 或 String

data数据说明:发送到服务器的数据。如果不是字符串,将会被转换为字符串。

GET请求将会被附加到URL后面。防止自动转换。对象必须为key/value数据格式。

例如:{foo1:"bar1",foo2:"bar2"}转换为 &foo1=bar1&foo2=bar2

如果是数组,JQuery将自动为不同的值类型对应同一个名称。

例如:{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2

也就是在JQuery中ajax提交data的数据格式为:{x:"x1",x2:"x3"}这种方式,如果有参数传入,格式如下:

data: {get_id: get_item_id,filter:"item"},

get_item_id是外部的参数。

转载自:黄兵个人博客 - jquery .ajax提交data数据格式

Ajax从后台返回前台的数据类型dataType参数:

•"xml": 返回 XML 文档,可用 jQuery 处理
•"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行
•"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 “cache” 参数。
 注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
 •"json": 返回 JSON 数据
 •"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,
 如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数
 •"text": 返回纯文本字符串

json的传递:

将java的List类型返回前台时,先将List转换为包含 json对象的JSONArray数组再传回前端

需要的jar包:json-lib-2.4-jdk15.jar 及其依赖包

后台:

 List<Student> student_list = new ArrayList<Student>();

 JSONArray jsonArray2 = JSONArray.fromObject(student_list);

 //JSONArray: [{no:"123", name:"张三"},{no:"124", name:"李四"},{...},{...}]

 PrintWriter printWriter = response.getWriter();
printWriter.print(jsonArray2);

前台:

function MyAjax(url, send_data, successFun,beforeSendFun,isAsync) {
if (isAsync == null)
isAsync = true;
$.ajax({
url : url,
type : "POST",
data : send_data,
async : isAsync,
dataType:'json',
beforeSend : beforeSendFun,
success : function(return_data) {
successFun(return_data);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert("请求处理失败");
}
});
}

Ajax前台向后台传递对象:

将js对象或者json对象转换为json字符串在Ajax传递,在后台中再将json字符串转换为json对象,再转换为java对象

 var student={
name:"abc",
age:12,
no:"123"
}; console.log(student);
//将js对象转换为json字符串通过ajax传递,在后台中再将json字符串转换为json对象再转换为java对象 student = JSON.stringify(student);

Ajax:

 $.ajax({
url : url,
type : "POST",
data : {
sendData:"传递下面的json字符串",
jsonStr: student
},
async : isAsync,
dataType:data_type,
beforeSend : beforeSendFun,
success : function(return_data) {
successFun(return_data);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert("请求处理失败");
}
});

后台解析:

String sendData = request.getParameter("sendData");

if (sendData.equals("传递下面json字符串")){

String jsonStr = request.getParameter("jsonStr");

JSONObject student_json= new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象
Student student = (Student)JSONObject.toBean(student_json,Student.class);//再将json对象转换为Student对象 }

json格式转换:

JS对象格式:

 var obj = {

       name: "饼干",      

       code: "PC-001",      

       price: 360,      

       getInfo: function () {

               return this.name;

       }

     }    

json对象:

var obj = {

        name: "饼干",      

        code: "PC-001",      

        price: 360,      

        getInfo: function () {

               return this.name;

       }

     }    

json字符串格式:

jsonStr="{"a":"adc","b":123,"c":"哈哈"}"

json对象,js对象,json字符串,java对象之间的常用转换:

str=JSON.stringify(obj);    json对象转换为json字符串
obj=JSON.parse(str);        json字符串转换为json对象
 var obj={
a:"adc",
b:123,
c:"哈哈"
};
console.log(obj);//js对象 obj=JSON.stringify(obj);//转换为json字符串
console.log(obj);
10 //obj="{"a":"adc","b":123,"c":"哈哈"}"

obj=JSON.parse(obj);//json字符串转换为json对象
console.log(obj);
//{a: "adc", b: 123, c: "哈哈"}

一、JSON字符串转化为JSON对象

假设我们有如下 JSON 字符串需要转换为 JSON 对象。
 
var jsonStr = '[{"CityId":18,"CityName":"西安"},{"CityId":53,"CityName":"广州"}]';

1,使用eval()函数进行转换

  • 使用 eval() 转换时需要在 json 字符外包裹一对小括号。
  • ie8(兼容模式)、ie7、ie6 不要使用此方法。
 
var jsonObj = eval('(' + jsonStr + ')');
alert(jsonObj[0]["CityName"]);

2,使用JSON.parse()方法进行转换

var jsonObj = JSON.parse(jsonStr);

3,使用json2.js进行转换

json2.js 提供了 json 的序列化和反序列化方法,完美支持各个浏览器。
使用时我们首先要将 json2.js 引用进来,源码地址:https://github.com/douglascrockford/JSON-js

 
var jsonObj = JSON.parse(jsonStr);

4,使用jQuery进行转换

如果我们项目中有使用 jQuery,那么直接使用 $.parseJSON() 方法即可,而且可以确保各个浏览器的兼容性。

 
var jsonObj = $.parseJSON(jsonStr);

二、JSON对象转化为JSON字符串

假设我们有如下的对象:

 

var jsonObj = {
"CityId":"18",
"CityName":"西安2"
};

1,使用JSON.stringify()方法进行转换

该方法不支持较老版本的IE浏览器,比如:ie8(兼容模式)、ie7、ie6。

 

运行结果如下:

var jsonStr = JSON.stringify(jsonObj);
alert(jsonStr);

2,使用json2.js进行转换

下载使用 json2.js,具体地址参考前面内容。使用方式和上面一样。

 
var jsonStr = JSON.stringify(jsonObj);

3,使用jQuery进行转换

首先对 jQuery 进行扩展,增加个 json 对象转字符串的方法。

jQuery.extend({
stringify : function stringify(obj) {
var t = typeof (obj);
if (t != "object" || obj === null) {
// simple data type
if (t == "string") obj = '"' + obj + '"';
return String(obj);
} else {
// recurse array or object
var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) {
v = obj[n];
t = typeof(v);
if (obj.hasOwnProperty(n)) {
if (t == "string") v = '"' + v + '"';
else if (t == "object" && v !== null) v = jQuery.stringify(v);
json.push((arr ? "" : '"' + n + '":') + String(v));
}
}
return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
}
}
});
 

使用方式如下:

 
var jsonStr = $.stringify(jsonObj);

java对象与json对象间的相互转换

1.将json字符串转换java对象

 JSONObject jsonObj = new JSONObject().fromObject(jsonStr);//将json字符串转换为json对象

 //将json对象转换为java对象
Student student =(Student)JSONObject.toBean(jsonObj,Student.class);//将json对象转换为Student对象

1.将java对象转换json字符串

 //先将java对象转换为json对象,在将json对象转换为json字符串
JSONObject json = JSONObject.fromObject(obj);//将java对象转换为json对象 String str = json.toString();//将json对象转换为字符串

Ajax向前后台传递json和转换的更多相关文章

  1. ajax向后台传递数组参数并将后台响应的数据赋值给一个变量供其它插件使用

    1.在js中封装ajax向后台传递数组参数函数 //combogrid * * @Description 封装ajax向后台传递数组参数并将后台响应的数据赋值给一个变量方便其他插件使用该数据函数 * ...

  2. ajax往后台传json格式数据报415错误

    问题描述: ajax往后台传json格式数据报415错误,如下图所示 页面代码 function saveUser(){ var uuId = document.getElementById(&quo ...

  3. 【转】jQuery.ajax向后台传递数组问题

    $.ajax({ url: "/xxx", type: "GET", data: { "boxIds": boxIds, "box ...

  4. jQuery.ajax向后台传递数组问题

    今天重温了一个问题,jQuery.ajax向后台传递一个数组,而在后台接收不到该值 前台js方法部分代码如下: //创建一个测试数组 var boxIds = new Array(); boxIds. ...

  5. ajax获取后台传递的json数据

      最近在使用JQuery的ajax方法时,需要返回的数据为json数据,在success返回中数据处理会根据返回方式不同会采用不同的方式来生成json数据.在$.ajax方法中应该是如何来处理的,简 ...

  6. 使用Ajax向SpringMVC传递Json数据

    这篇文章已经过时了. 请参考比较合适的前后端交互方式. 1.保证SpringMVC配置成功了. 2.在pom.xml中追加Jackson相关的依赖 <dependency> <gro ...

  7. easyui之datagrid之formatter(后台传递常量自动转换值)

    1,datagrid之formatter formatter格式化函数有三个参数: value:字段值(一般为后台传递给前台的值): row:当前行数据: index:当前行索引. return值是显 ...

  8. JS向后台传递json数组对象

    var Obj = []; //一下代码可以循环插入 var returnObj = new Object();//创建一个对象 returnObj.id = “123”: returnObj.mon ...

  9. aspx后台传递Json到前台的两种接收方法

    第一种:前台接收 dataType: "json",                success: function (data) {                    va ...

随机推荐

  1. html制作简单框架网页 实现自己的音乐驿站 操作步骤及源文件下载 (播放功能限mp3文件)

    使用HTML语言来设计制作 Hyper Text Markup Language 超文本标记语言 这门语言的特点就是标记,就是把所有的命令单词用<>标记起来,就可以发挥作用 还有一个特点, ...

  2. LeetCode 三角形最小路径和

    给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11 ...

  3. Bzoj 1257 [CQOI2007]余数之和 (整除分块)

    Bzoj 1257 [CQOI2007]余数之和 (整除分块) 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 一道简单题. 题目 ...

  4. 【DB_MySQL】查询语句中各子句的执行顺序

    1. FROM 指明查询来源 2. WHERE筛选元组 3. GROUP BY进行分组 4. HAVING 筛选分组 5. SELECT 投影出指定的字段列 6. ORDER BY 对结果集排序 7. ...

  5. Python正则表达式与hashlib模块

    菜鸟学python第十六天 1.re模块(正则表达式) 什么是正则表达式 正则表达式是一个由特殊字符组成的序列,他能帮助对字符串的某种对应模式进行查找. 在python中,re 模块使其拥有全部的正则 ...

  6. restful规范和drf模块

    restfu1规范 它是一个规范,面向资源架构 10条规范: 1.api与用户的通信协议,总是使用https协议 api网上提供的接口 2.域名: 尽量将api部署在专用域名(会存在跨域问题) API ...

  7. HAL——学习SysTick

    开始: 1.嵌套向量中断寄存器 (NVIC): 嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理.包括内核异常在内的所有中断均通过 NVIC 进 ...

  8. sublime text 3搭建python 的ide

    感谢大佬-->原文链接 1. 打开Sublime text 3 安装package control Sublime Text 3 安装Package Control 2. 安装 SublimeR ...

  9. flask中的上下文_请求上下文和应用上下文

    前引 在了解flask上下文管理机制之前,先来一波必知必会的知识点. 面向对象双下方法 首先,先来聊一聊面向对象中的一些特殊的双下划线方法,比如__call__.__getattr__系列.__get ...

  10. Appium启动app

    首先要获取包名,然后获取launcherActivity.获取这两个关键东西的方法很多,这里就不一一多说,小伙伴们可以各显神通.小编这里主要给大家推荐一个sdk自带的实用工具aapt. aapt即An ...