json&ajax

Ajax & JSON

2018-08-10  本文已影响0人  醒醒Coco

Ajax

概念

  1. 什么是Ajax?
    Asynchronous JavaScript and XML , 异步的JSXML.异步的客户端和服务器交互技术
    Ajaxjs提供的,代码是js代码,需要写在Script标签体里
    Ajax在客户端和服务器进行交互的时候,数据默认是使用XML格式传输的--已经被json取代了

  2. 作用

    • 局部刷新
    • 异步加载
  3. 异步与同步的概念
    同步: 客户端发起请求,然后客户端处于服务器的等待状态,这个状态下,客户端不能进行其他操作.类似于"假死"状态.
    异步: 客户端发起请求, 然后客户端可以自由进行其他操作,不会处于“假死”状态;一旦服务器响应完成,可以继续后续操作

JS 的 Ajax

步骤
js 的 get方法-异步
function ajaxGet() {
        //创建一个Ajax引擎对象
        var xmlHttp = new XMLHttpRequest();
        //2.给Ajav引擎对象绑定事件,监听Ajax的引擎状态变化,一旦监听到接收服务器响应完成,要执行响应行为
        xmlHttp.onreadystatechange = function (ev) {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.status == 200) {
                    document.getElementById("tip").innerText = xmlHttp.responseText;
                }
            }
        }
        //3.这是请求的参数数据,open()方法:请求方式,请求地址,是否异步(默认true,异步)
        //get方法传参
        xmlHttp.open("get", "/ajax/ajaxServlet?username=tom", true);
        //4. 发送请求
        xmlHttp.send();  
js的post方法-异步
    function ajaxPost() {
        //1. 创建一个Ajax引擎对象
        var xmlhttp = new XMLHttpRequest();
        // 2. 给Ajax引擎对象绑定事件,监听Ajax引擎的状态变化.一旦监听到接受服务器响应完成,要执行响应行为
        xmlhttp.onreadystatechange = function (ev) {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                    document.getElementById("tip").innerHTML = xmlhttp.responseText;
                }
            }
        }
        // 3. 设置请求的参数数据:请求方式,请求地址,是否异步(//不写true,默认是异步的)
        xmlhttp.open("post", "ajaxServlet", true);
        // 4. 发送请求
        xmlhttp.setRequestHeader("Content-type","application/x-www/form-urlencode")
        xmlhttp.send("username=tom");
    }
js的post和get方法-同步模式

只需要将 xmlhttp.open(method,url,async)中的aync参数该为false即可

请求参数的格式
关于路径

jQuery 的 Ajax

原生的 JavaScript 提供的 Ajax,重复代码比较多,而且存在浏览器兼容问题。jQuery 对 js 的 Ajax 做了二次封 装,封装后提供了一些方法。这些方法一样可以实现 Ajax 的效果,但是比原生 js 的 Ajax 更为简单,并且解决了浏览器兼 容性问题.

Post方法 (最常用)
语法: jQuery.post(url,[params],[callback],[responseType])
参数: url 请求的地址,必须
     params 请求的参数
        格式1: username=tom&password=123
        格式2:  {username:"tom",password:"123"}
     callback 当Jquery监听到服务端响应完成之后,调用的函数对象
        function(result){
            //result:服务器响应回来的数据
        }
    responseType 服务端响应回来的数据类型。text/json
//var params = "username=tom";
        var params = {username:"tom"};
        $.post("ajaxServlet", params, function (result) {
            alert(result);
        })
Get方法
语法: jQuery.get(url,[params],[callback],[responseType])
参数: url 请求的地址,必须
     params 请求的参数
        格式1: username=tom&password=123
        格式2:  {username:"tom",password:"123"}
     callback 当Jquery监听到服务端响应完成之后,调用的函数对象
        function(result){
            //result:服务器响应回来的数据
        }
    responseType 服务端响应回来的数据类型。text/json
 var params = {username:"tom"}
        $.get("/ajax/ajaxServlet",params,function (result) {
            alert(result);
        })

注意: get/post方法,只能发异步的. 如果要发送同步的请求,需要使用ajax方法

Ajax方法
语法:$.ajax({settings});
参数:是以{}的对象形式,里边是键值对的方式配置相关的数据。有非常多的配置项,常用的有:
      url:请求的地址。必须
      data:请求参数。格式一:"username=tom&password=123"。 格式:{username:"tom",password:"123"}
      type:请求方式。get/post
      dataType:服务端响应回来的数据类型。text/json
      success:jQuery 监听到服务端响应完成后,调用的函数对象。
         function(result){
             //result:服务端响应回来的数据
         }
      async:是否异步。true/false
$.ajax({
    url: "/ajax/ajaxServlet",  // 请求地址,必填
    data: "username=tom", //请求参数
    type: "post", //请求方式
    dataType: "text", //服务器返回的参数类型
    success: function (result) { //监听到服务器响应完成后,调用函数对象
        alert(result);
    },
    async: true  //是否异步,默认true
});
jQuery3.0 的Ajax新增签名方式

待补充...下回分解....

JSON

概念

JavaS Object Notation JS对象标记法. 是一种轻量级数据格式,代替xml

定义和解析JSON

JSON转换工具

服务端经常要把 JavaBean 或者是 JavaBean 的集合转换成 json,返回响应给客户端,可以使用工具包来完成 这个转换的工作。

常见的有:

jsonlib
package json;

import domain.User;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class JsonLib_01 {
    public static void main(String[] args) {
        User user1 = new User("coco","123");
        User user2 = new User("xingxing","123");

        ArrayList<User> userList = new ArrayList();

        userList.add(user1);
        userList.add(user2);

        Map<String,User> map = new HashMap<>();
        map.put("user1",user1);
        map.put("user2",user2);
        
        //把user1转换为json格式
        JSONObject jsonObject = JSONObject.fromObject(user1);
        String json = jsonObject.toString();
        System.out.println(json);

        //把list转换为json格式
        JSONArray jsonArray = JSONArray.fromObject(userList);
        json = jsonArray.toString();
        System.out.println(json);

        //把map转换为json格式
        JSONObject jsonObject1 = JSONObject.fromObject(map);
        json = jsonObject1.toString();
        System.out.println(json);
    }
}

gson
package json;

import com.google.gson.Gson;
import domain.User;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Gson_02 {
    public static void main(String[] args) {
        User user1 = new User("coco", "123");
        User user2 = new User("xingxing", "123");

        ArrayList<User> userList = new ArrayList();
        userList.add(user1);
        userList.add(user2);

        Map<String, User> map = new HashMap<>();
        map.put("user1", user1);
        map.put("user2", user2);

        //把user转换为Json格式
        Gson gson = new Gson();
        String json = gson.toJson(user1);
        System.out.println(json);

        //把userList转换为Json格式
        json = gson.toJson(userList);
        System.out.println(json);

        //把map转换为Json格式
        json = gson.toJson(map);
        System.out.println(json);
    }
}

fastjson
package json;

import com.alibaba.fastjson.JSONObject;
import domain.User;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class FastJson_03 {
    public static void main(String[] args) {
        User user1 = new User("coco", "123");
        User user2 = new User("xingxing", "123");

        ArrayList<User> userList = new ArrayList();

        userList.add(user1);
        userList.add(user2);

        Map<String, User> map = new HashMap<>();
        map.put("user1", user1);
        map.put("user2", user2);

        //把user转换为Json格式
        String json = JSONObject.toJSONString(user1);
        System.out.println(json);

        //把userList转换为Json格式
        json = JSONObject.toJSONString(userList);
        System.out.println(json);

        //把map转换为Json格式
        json = JSONObject.toJSONString(map);
        System.out.println(json);
    }
}
jackson
package json;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import domain.User;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Jackson {
    public static void main(String[] args) throws JsonProcessingException {

        User user1 = new User("coco", "123");
        User user2 = new User("xingxing", "123");

        ArrayList<User> userList = new ArrayList();

        userList.add(user1);
        userList.add(user2);

        Map<String, User> map = new HashMap<>();
        map.put("user1", user1);
        map.put("user2", user2);

        ObjectMapper mapper = new ObjectMapper();
        
        //把user转换为Json格式
        String json = mapper.writeValueAsString(user1);
        System.out.println(json);
        
        //把userList转换为Json格式
        json = mapper.writeValueAsString(userList);
        System.out.println(json);
        
        //把map转换为Json格式
        json = mapper.writeValueAsString(userList);
        System.out.println(json);
    }
}

上一篇 下一篇

猜你喜欢

热点阅读