json与ajax的使用,JSON与AJAX的简单使用

  • Post author:
  • Post category:其他


在这里记录一下json与ajax的使用方法与需要注意的事项

JSON

首先,使用ajax之前需要先对json有所了解:

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。

json是使用键值对的方法来储存数据的

列如:

{“name”: “张三”}

{“age”: “18”}

JSON 是 JavaScript 对象的字符串表示法,本质是一个 字符串 。

在js中,JSON 和 js 对象互转

//定义一个对象

var user = {

name:”张三”,

age:18

};

//将js对象转换成json字符串

var str = JSON.stringify(user);

//将json字符串转换为js对象

var userStr = JSON.parse(str);

环境搭建

com.fasterxml.jackson.core

jackson-databind

2.10.1

编写配置springMVC配置文件,加上解决中文乱码配置

JSON简单使用

编写一个user用户实体类

public class User {

private String name;

private int age;

private String sex;

// 以下为构造方法,get和set方法,toString方法。。。

}

编写一个Controller

注意事项:

以下编写了3种方法

1.实体对象转换JSON字符串格式,返回前端

2.后端返回一个集合,返回前端

3.后端返回时间并处理,且去除时间戳转换,返回前端

// 或者使用@RestController注解,如果使用@RestController注解,则下列所有方法无需再添加@ResponseBody注解

@Controller

public class UserController {

// 将后台实体对象转换成JSON字符串返回给前端

@RequestMapping(“/json1”)

@ResponseBody

public String json1() throws JsonProcessingException {

// 1、创建一个jackson的对象映射器,用来解析数据

ObjectMapper mapper = new ObjectMapper();

// 2、创建一个用户对象

User user = new User(“张三1”, 18, “男”);

// 3、将我们的对象解析成为json格式

String str = mapper.writeValueAsString(user);

// 4、由于@ResponseBody注解,这里会将str转成json格式返回;十分方便

return str;

}

// 返回一个List集合

@RequestMapping(“/json2”)

@ResponseBody

public String json2() throws JsonProcessingException {

//创建一个jackson的对象映射器,用来解析数据

ObjectMapper mapper = new ObjectMapper();

//创建一个对象

User user1 = new User(“张三1号”, 18, “男”);

User user2 = new User(“张三2号”, 18, “男”);

User user3 = new User(“张三3号”, 18, “男”);

User user4 = new User(“张三4号”, 18, “男”);

List list = new ArrayList();

list.add(user1);

list.add(user2);

list.add(user3);

list.add(user4);

//将我们的对象解析成为json格式

String str = mapper.writeValueAsString(list);

return str;

}

// 从后端生成一个当前时间,并返回至前端

@RequestMapping(“/json3”)

@ResponseBody

public String json3() throws JsonProcessingException {

ObjectMapper mapper = new ObjectMapper();

//不使用时间戳的方式

mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);

//自定义日期格式对象

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

//指定日期格式

mapper.setDateFormat(sdf);

Date date = new Date();

String str = mapper.writeValueAsString(date);

return str;

}

}

AJAX

这里直接使用jQuery提供的js库

jQuery.ajax(…)

部分参数:

url:请求地址

type:请求方式,GET、POST(1.9.0之后用method)

headers:请求头

data:要发送的数据

contentType:即将发送信息至服务器的内容编码类型(默认: “application/x-www-form-urlencoded; charset=UTF-8”)

async:是否异步

timeout:设置请求超时时间(毫秒)

beforeSend:发送请求前执行的函数(全局)

complete:完成之后执行的回调函数(全局)

success:成功之后执行的回调函数(全局)

error:失败之后执行的回调函数(全局)

accepts:通过请求头发送给服务器,告诉服务器当前客户端可接受的数据类型

dataType:将服务器端返回的数据转换成指定类型

“xml”: 将服务器端返回的内容转换成xml格式

“text”: 将服务器端返回的内容转换成普通文本格式

“html”: 将服务器端返回的内容转换成普通文本格式,在插入DOM中时,如果包含JavaScript标签,则会尝试去执行。

“script”: 尝试将返回值当作JavaScript去执行,然后再将服务器端返回的内容转换成普通文本格式

“json”: 将服务器端返回的内容转换成相应的JavaScript对象

“jsonp”: JSONP 格式使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数

以上需要重点掌握url,type,data,success(回调函数)

接下来使用ajax编写一个登录例子

1.编写一个AjaxController

这里使用@ResponseBody是因为,springMvc默认会使用视图解析器将返回值进行处理,跳转页面。添加了@ResponseBody则springMVC不会调用视图解析器。

@Controller

@RequestMapping(“/user”)

public class AjaxController {

@RequestMapping(“/login”)

@ResponseBody

public void ajax1(String username, String password) {

// 验证用户名是否等于admin,密码是否等于123456

String msg = “”;

//模拟数据库中存在数据

if (name!=null){

if (“admin”.equals(name)){

msg = “用户名正确”;

}else {

msg = “用户名输入错误”;

}

}

if (pwd!=null){

if (“123456”.equals(pwd)){

msg = “密码正确”;

}else {

msg = “密码输入有误”;

}

}

return msg; //由于@ResponseBody注解,将msg转成json字符串格式返回

}

}

2.页面引入jQuery。可以使用在线的CDN , 也可以下载导入

3.JSP页面 login.jsp

使用鼠标焦点事件,验证用户名与密码是否正确

ajax

function nameVerify(){

$.ajax({

url:”${pageContext.request.contextPath}/user/login”,

type: “post”

data:{

‘username’:$(“#username”).val()

},

success:function (data) {

if (data.toString()==’用户名正确’){

$(“#nameInfo”).css(“color”,”green”);

}else {

$(“#nameInfo”).css(“color”,”red”);

}

$(“#nameInfo”).html(data);

}

});

}

function pwdVerify(){

$.ajax({

url:”${pageContext.request.contextPath}/user/login”,

type: “post”

data:{

‘password’:$(“#password”).val()

},

success:function (data) {

if (data.toString()==’密码正确’){

$(“#password”).css(“color”,”green”);

}else {

$(“#password”).css(“color”,”red”);

}

$(“#pwdInfo”).html(data);

}

});

}

用户名:

密码: