JSON和AJAX

作者: 绿杨烟外晓寒轻_ | 来源:发表于2020-02-22 15:52 被阅读0次

JSON

一、介绍

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

image.png

在JS中,一切都是对象,因此一切JS支持的类型都可以通过JSON来表示(比如传参时可以传JSON文本)

<u>JSON的优势在于前后端分离时数据传输更高效。</u>

二、语法格式

  • 对象表示为键值对
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

{"name":"xiaoming"}

{"age":"3"}

{"sex":"male"}

var obj={a:'hello',b:'world'};//这是对象,键名也可以是引号包裹
var json='{"a":"hello","b":"world"}';//这是JSON字符串,本质上是一个字符串

三、JSON与JS对象互转

var obj=JSON.parse('{"a":"hello","b":"world"}');//结果是{a:'hello',b:'world'}
var JSON=JSON.stringify({a:'hello',b:'world'});//结果是对象变为了JSON格式字符串

四、在spring中使用

1.直接返回字符串

@Controller
public class UserController{
    @RequsetMapping("/json1")
    //正常返回会走视图解析器,而json需要返回字符串
    //市面上有许多第三方jar包可以实现这个功能,如fastjson、jackson
    //搜索maven,在maven网站找jackson包导入
    //@ResponseBody将服务器返回的对象转换为json对象响应回去   @RequestBody
    @ResponseBody
    public String json1(){
        //需要一个jackson的对象映射器,就是一个类,使用它可以直接将对象转换为json字符串
        ObjectMapper mapper=new ObjectMapper();
        //要返回的对象
        User user=new User();
        //将java对象转换为json字符串
        String str=mapper.writeValueAsString(user);
        return str;//返回json格式字符串,中文会乱码
    }
}
@Controller
public class UserController{
    //给@RequestMapping加属性解决编码格式
    //修改produces属性即可
    @RequsetMapping(value="/json2",produces="application/json;charset=utf-8") 
    @ResponseBody
    public String json2(){       
        ObjectMapper mapper=new ObjectMapper();      
        User user=new User();     
        String str=mapper.writeValueAsString(user);
        return str;
    }
}
@Controller
public class UserController{
    @RequsetMapping(value="/json3") 
    @ResponseBody
    public String json3(){       
        List<User> list=new ArrayList<>();
        User user1=new User();     
        User user2=new User();      
        list.add(user1);
        list.add(user2);
        
        return new ObjectMapper().writeValueAsString(list);
    }
}

2.时间字符串

@RequsetMapping(value="/time1") 
@ResponseBody
public String json4(){       
    Date date=new Date();
    //问题,时间默认返回的json字符串变成了时间戳的格式:15647115566464,从1970.1.1至今的毫秒数  TimeStamp
  
    
    return new ObjectMapper().writeValueAsString(list);
}
@RequsetMapping(value="/time2") 
@ResponseBody
public String json5(){       
    ObjectMapper mapper=new ObjectMapper();
    //关闭时间戳功能
    mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
    //时间格式化问题,自定义日期格式对象
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //让mapper指定时间日期格式为sdf
    mapper.setDateFormat(sdf);
    
    Date date=new Date();
    return mapper.writeValueAsString(date);
}

3.一个工具类

public class JsonUtils{
    public static String getJson(Object object){
        return getJson(object,"yyyy-MM-dd HH:mm:ss");
    }
    
    public static String getJson(Object object,String dateFormat){
        ObjectMapper mapper=new ObjectMapper();            
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);  
        SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);                          mapper.setDateFormat(sdf);
        
        try{
            return mapper.writeValueAsString(object);
        }catch(JsonProcessingException e){
            e.printStackTrace();
        }
        return null;
    }
}
@RequsetMapping(value="/time3") 
@ResponseBody
public String json6() throws JsonProcessingException {       
    Date date=new Date();
    return JsonUtils.getJson(date);
}

AJAX

一、介绍

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

这里使用jQuery提供的ajax,本质是XMLHttpRequest(XHR)


image.png

二、使用

$.get(url,data1,success(data2,type));

$.post(url,data1,success(data2,type));

$.ajax(url,data1,success(data2,type));//默认请求方式为get

  • url 待载入页面的url地址

  • data1 待发送的参数

  • success 载入成功时的回调函数

  • data2 返回的数据

  • type 返回成功还是失败

三、代码

1.简例

@Controller
@RequestMapping("/ajax")
public class AjaxController{
    @RequestMapping("/a1")
    public void ajax(String name,HttpServletResponse reponse) throws IOException{
        if("admin".equals(name)){
            response.getWriter().print("true");
        }else{
            reponse.getWriter().print("false");
        }
        
        
    }
}
<html>
    <head>
        <title>Ajax</title>
        <script src="${pageContext.request.contextPath}/statics/js/jquery-3.4.1.js"/> 
        <script type="text/javascript">
            function a1(){
                //请求将文本框的值发给服务器,接收服务器返回的数据
                $.ajax({
                    url:" ${pageContext.request.contextPath}/ajax/a1",
                    type:post,
                    data:{"name":$("#textname").val();},
                    success:funtion (data,status){
                    console.log(data);
                    console.log(status);
                }
                });
              
               
            }
        </script>
    </head>
    <body>
        用户名:<input type="text" id="textname" onblur="">
    </body>
</html>

2.登录校验


未完待续

相关文章

  • ajax 的实现

    var $ = {}; $.ajax = ajax; function json2url(json){ var a...

  • AJAX和JSON

    第一章Ajax 1.1 Ajax 概念 "Asynchronous Javascript And XML"(异步...

  • JSON和ajax

    json json是类似于javascript对象的一种数据格式; json格式的数据: {"name":'tom...

  • AJAX和JSON

    浏览器和服务器之间,是通过HTTP协议通信的,那么如何发出一个HTTP请求呢,有以下几种方法: 以上方法要么就只能...

  • json和ajax

    json json是 JavaScript Object Notation 的首字母缩写,单词的意思是javasc...

  • ajax和json

    ajax介绍 问题:用户注册的时候,没有,用户名是否可用提示,导致用户需要反复的提交表单,用户体验不好。优化:用户...

  • json 和ajax

    json json是 JavaScript Object Notation 的首字母缩写,单词的意思是javasc...

  • AJAX和JSON

    AJAX: 1. 概念: ASynchronous JavaScript And XML 异步的JavaSc...

  • JSON和AJAX

    JSON 一、介绍 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量...

  • 12_django_ajax

    AJAX 一、什么是ajax? 异步的JavaScript和xml,跟后台交互,都用json 二、ajax干啥用的...

网友评论

    本文标题:JSON和AJAX

    本文链接:https://www.haomeiwen.com/subject/ghblqhtx.html