AJAX与JSON数据交互处理

这篇具有很好参考价值的文章主要介绍了AJAX与JSON数据交互处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Ajax即Asynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 [3]  使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。 [3]

jQuery AJAX API

$.AJAX({settings})
url: 请求路径
type: 请求的方式
data/msg: 发送服务器的参数
beforeSend:function, 发送请求前可修改 XMLHttpRequest 对象的 函数
success:function, 代表成功状态的响应函数,参数是服务器端返回的数据对象
complate:function, 代表所有的操作都已经完成后所做的处理
error:function, 代表错误处理函数
语法:
$.ajax({
		url: "",
		type: "",
		data: {
			name: "yhc",
			id: 5321
		},
		success: function(res) {
			console.log(res)
		}
	})
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/8/20 0020
  Time: 15:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
  <script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>

  <script type="text/javascript">
    $(function() {
      $("#username").blur(function() {
        $.ajax({
            type: "get",
            url: "RegController?username=" + $("#username").val(),
            success: function(data){
                $("#loading").remove() ;
                //$("#msg").html(msg);
                alert(data.msg) ;
            },
            beforeSend: function() {
                $("body").append($("<img>").attr({"src":"image/loading.gif","id":"loading"})) ;
            }
        });
        $.get("RegController",function(msg){
          $(msg.hello).each(function(index,d){
            $("#msg").html(d.borndate + ":" + d.studentNO) ;
          }) ;
        }) ;
      }) ;
    }) ;
  </script>
</head>
<body>
<input type="text" name="username" id="username" />
<span id="msg"></span>

</body>
</html>

get/post方法

get 与post区别

  • 安全性:get方式请求参数会拼接到url后面,安全性低,post请求参数会包裹在请求体中,安全性高
  • 传输数量:get方式传输数据量小,不能超过2kb,post传输数据量大
  • 传输速度:get速度快,post慢

$.get("xxx", {
        name: "xxx",
        id: 17
    }, function(resText, status, xhr) {
        console.log(resText)
    })

$.post("xxx", {
        name: "xxx",
        id: 17
    }, function(resText, status, xhr) {
        console.log(resText)
    })

 fastjson

​在前后端数据传输交互中,经常会遇到字符串(String)与json,XML等格式相互转换与解析,其中json以跨语言,跨前后端的优点在开发中被频繁使用,基本上可以说是标准的数据交换格式。fastjson 是一个java语言编写的高性能且功能完善的JSON库,它采用一种“假定有序快速匹配”的算法,把JSON Parse 的性能提升到了极致。它的接口简单易用,已经被广泛使用在缓存序列化,协议交互,Web输出等各种应用场景中。
 

  1. 能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。
  2. 顾名思义,fastjson操作 JSON的速度是非常快的。
  3. 无其他包的依赖。
  4. 使用比较方便。

maven依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <!--(起码1.2.48以上)因为这个版本一下存在漏洞-->
    <version>版本根据自己需要</version>
</dependency>
 

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray

public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject 
    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 

public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 

public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 

public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 

public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 

public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
 

  java类转换为json字符串

package com.csi.eshop.controller.product;

import com.alibaba.fastjson.JSON;
import com.csi.eshop.domain.Product;
import com.csi.eshop.service.ProductService;
import com.csi.eshop.service.impl.ProductServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/JSON_EACHController")
public class JSON_EACHController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("application/json;charset=utf-8");

        PrintWriter  out = resp.getWriter();
        ProductService productService = new ProductServiceImpl();
        List<Product> list = productService.list();
        String s = JSON.toJSONString(list);
        out.println(s);

    }
}

会输出集合以及数组对象

resp.setContentType("application/json;charset=utf-8");

使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。

实际应用

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: 华为
  Date: 2022/8/20
  Time: 22:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
          integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">

    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <!--  <script type="text/javascript" src="json/no3.js"></script>-->
    <!-- 可选的 Bootstrap 主题文件(一般不用引入) -->
    <!-- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css" integrity="sha384-6pzBo3FDv/PJ8r2KRkGHifhEocL+1X2rVCTTkUfGk7/0pbek5mMa1upzvWbrUbOZ" crossorigin="anonymous"> -->

    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"
            integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous">
    </script>
    <script type="text/javascript">
        $.ajax({
            type: "get",
            url: "JSON_EACHController",
            success: function (msg) {
                // $("#loading").remove() ;
                //$("#msg").html(msg);
                //  alert(msg) ;
                $.each(msg, function (index, item) {

                    $("#list").html($("#list").html() +
                        "<div class='col-sm-6 col-md-3'>" +
                        "<div class='thumbnail'>" +

                        "<img id='img1' src='" + item.fileName + "' alt='猥琐的图片路径' >" +
                        "<div class='caption'>" +
                        "<h3>" + item.name + "</h3>" +
                        "<p>" + item.description + "</p>" +
                        "<p>" + item.price + "</p>" +
                        "<p>" + "<a href='#' class='btn btn-primary' role='button'>购买</a>" + "<a href='#' class='btn btn-default' role='button'>加入购物车</a>" + "</p>" +
                        "</div>" +
                        "</div>" +
                        "</div>"
                    )
                })
            },

        });
    </script>
</head>
<body>
<div class="row" id="list">


    <!--    <div class="col-sm-6 col-md-3">-->
    <!--      <div class="thumbnail">-->
    <!--        <img src="images/per_1.jpg" alt="...">-->
    <!--        <div class="caption">-->
    <!--          <h3>Dior/迪奥 真我香水EDP 克丽丝汀</h3>-->
    <!--          <p>开业巨惠,北京专柜直供”,不光低价,“真”才靠谱!</p>-->
    <!--          <p><a href="#" class="btn btn-primary" role="button">购买</a> <a href="#" class="btn btn-default" role="button">加入购物车</a></p>-->
    <!--        </div>-->
    <!--      </div>-->
    <!--    </div>-->

</div>
</body>
</html>

日期格式处理

日期字段上添加
@JSONFILED ( format = 'yyyy-MM-dd' )
JSON . toJSONString ( student ) ; 

数组和集合

import com.alibaba.fastjson.JSON;
import domain.Grade;
import domain.Result;
import domain.Student;
import org.junit.Test;

import java.util.*;

public class test1 {
    @Test
    public void test1(){
        Result result = new Result(200,"成功");
        String jsonStr = JSON.toJSONString(result);
        System.out.println(jsonStr);
    }
    @Test
    public void test2(){
        Student student = new Student();
        student.setStudentNo("10001");
        student.setBornDate(new Date());
        Grade grade = new Grade();
        grade.setGradeName("一年");
        grade.setGradeId(1);

        Set<Student> students = new HashSet<>();
        students.add(student);
        grade.setStudents(students);
        student.setGrade(grade);
        String jsonStr = JSON.toJSONString(student);
        System.out.println(jsonStr);
    }
    @Test
    public void test3(){
        Grade grade = new Grade();
        grade.setGradeName("一年");
        grade.setGradeId(1);
        Student student1 = new Student();
        student1.setStudentNo("10001");
        student1.setBornDate(new Date());

        Student student2 = new Student();
        student2.setStudentNo("10002");
        student2.setBornDate(new Date());
        Set<Student> students = new HashSet<>();
        students.add(student1);
        students.add(student2);
        grade.setStudents(students);
        String s = JSON.toJSONString(grade,true);
        System.out.println(s);
    }
    @Test
    public void test4(){
        //
        Grade grade = new Grade();
        grade.setGradeName("一年");
        grade.setGradeId(1);
        Student student1 = new Student();
        student1.setStudentNo("10001");
        student1.setBornDate(new Date());

        Student student2 = new Student();
        student2.setStudentNo("10002");
        student2.setBornDate(new Date());
        List<Student> studentList = new ArrayList<>();
        studentList.add(student1);
        studentList.add(student2);

        String s = JSON.toJSONString(studentList);
        System.out.println(s);

        Set<Student> students = new HashSet<>();
        students.add(student1);
        students.add(student2);
        grade.setStudents(students);

        String s1 = JSON.toJSONString(grade);
        System.out.println(s1);


        Map<String,Student> map = new HashMap<>();
        map.put("key1",student1);
        map.put("key2",student2);
        String giao = JSON.toJSONString(map,true);
        System.out.println(giao);
        //
    }
    @Test
    public void test5(){
        //
        Student student1 = new Student();
        student1.setStudentNo("10001");
        student1.setBornDate(new Date());
        String giao = JSON.toJSONString(student1);
        System.out.println(giao);
        //
    }
}

List[{对象}]

Set{[{对象}]}

Map{对象}文章来源地址https://www.toymoban.com/news/detail-488665.html

到了这里,关于AJAX与JSON数据交互处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • javaweb之ajax异步交互

    一、概念 1、传统网站存在的问题 传统的页面交互是Servlet 调用完业务逻辑层后将数据存储到域对象中,然后跳转到指定的 jsp 页面,在页面上使用 EL表达式 和JSTL 标签库进行数据的展示。该模式存在以下问题: 网速比较慢的情况下,页面加载时间长,用户需等待 表单提交后

    2023年04月08日
    浏览(45)
  • 异步请求(Ajax,axios,json)

    同步/异步请求 表单(前端)向后端发送请求,属于同步请求 同步 : 发一个请求, 给一个回应, 会用回应的内容 覆盖 掉浏览器中内容,这样会打断前端其他的正常操作,在现在的前端中,显得不太友好。 异步 : 不同步 前端正常输入时,可以同时与后端进行交互,后端响应的数据

    2024年02月12日
    浏览(54)
  • 通过ajax异步交互实现echarts绘图

    目录 前言 1.引入库 2.flask链接MYSQL读取数据 3.HTML页面echarts绘图 4.结果实现 总结: ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。 ECharts 遵循 Apache-2.0 开源协议,免费商用。 ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等

    2023年04月14日
    浏览(59)
  • JavaWeb中异步交互的关键——Ajax

    AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 我们先来说概念中的 JavaScript 和 XML , JavaScript 表明该技术和前端相关; XML 是指以此进行数据交换。 AJAX 作用有以下两方面: 与服务器进行数据交换 :通过AJAX可以给服务器发送请求,服务器将数据直接响应回给浏览器

    2024年02月03日
    浏览(45)
  • 探索异步交互:JavaScript AJAX 的全面指南

    ​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖 人终将被年少不可得之物困其一生 依旧 青山 ,本期给大家带来JavaScript篇专栏内容:JavaScript-AjAx 目录 AJAX AJAX 的优势 AJAX 的使用 创建一个 ajax 对象 配置链接信息 发送请求 一个基本的 ajax 请求 ajax 状态码 readyStateChange resp

    2024年02月03日
    浏览(52)
  • Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递

      前面完成了页面的跳转、登录,很多时候不刷新页面就想刷新局部数据,此时ajax就是此种技术,且是异步的。   本篇实现网页内部使用js调用ajax实现异步交互数据。   在js中使用 ajax是通过XMLHttpRequest来实现的。        链接:https://pan.baidu.com/s/1tJMTPhIIyVE40qWxRW

    2024年02月08日
    浏览(112)
  • 六、Json 数据的交互处理

           JSON 概况以及 JAVA 基本操作 JSON 数据的方式        因为现在的项目大多数都是前后端分离的项目,前端和后端都独立开发和部署。        由后端提供接口,前端从接口获取数据,将数据渲染到页面上。前后端数据传输的格式就是 JSON! JSON 和 JavaScript 的关系:

    2024年02月10日
    浏览(71)
  • [前端系列第6弹]Ajax简明教程:轻松实现Web页面的异步交互

    在这篇文章中,我将介绍Ajax的基本概念、原理、优缺点、实现方法和应用场景,以及如何使用它来实现Web页面的异步交互。还将给一些简单而实用的例子,让你可以跟着我一步一步地编写自己的Ajax代码。 目录 一、什么是Ajax 二、如何使用Ajax (一)JavaScript中使用Ajax (二)

    2024年02月13日
    浏览(45)
  • Spring MVC学习随笔-Ajax集成(JSON格式返回数据)、拦截器(MyInterceptor)、全局异常处理(GlobalExceptionResolver)

    学习视频:【编程不良人】继spring之后快速入门springmvc,面对SpringMVC不用慌 引入相关依赖 开发控制器 日期格式修正 可以正常响应 拦截器 :Interceptor 拦截 中断 类似于javaweb中的Filter,不过没有Filter那么强大 作用 Spring MVC的拦截器是一种用于在请求处理过程中进行预处理和后处

    2024年02月05日
    浏览(52)
  • DAY14_Filter&Listener&Ajax&Axios&Json&fastjson&综合案例-axios和html交互

    Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求 拦截 下来,从而实现一些特殊的功能。 如下图所示,浏览器可以访问服务器上的所有的资源(servlet、jsp、html等) 而在访问到这些资源之前可以使过滤器拦截来下,也就是说在访问

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包