ajax的初级使用($.ajax,$.get,$.post)以及json的介绍和初级使用以及相关应用的代码

大家学习ajax之前写的网页一般都是,提交了信息后就要网页全部重新刷新,这样影响了用户的连续性体验(比如,如果用户在看视频的时候想给视频点赞,如果要重新刷新页面那体验太差了),这是原始的web1.0
所以可以使用ajax来进行局部刷新,这属于web2.0,能提高用户体验

RSS协议:

简易信息聚合(也叫聚合内容)是一种基于XML的标准,在互联网上被广泛采用的内容包装和投递协议。
可以把每一个小块独立起来,每个小块请求每个小块的内容
ajax就是rss的一种实现
对数据进行定制化的处理
ajax可以拿来做局部刷新的

传统web和ajax的区别

在这里插入图片描述





ajax有原生ajax和jquery封装好的ajax,我不会原生的,所以这里只记录jquery的ajax了




jquery中发起ajax请求的最常用的三种方式有

  • $.get(url,[data],[请求成功后应该执行的函数],[dataType])
    其中[]中的是可填选项
  • $.post(url,[data],[请求成功后应该执行的函数],[dataType])
  • $.ajax()

这里详细讲下$.ajax()

$.ajax({
"url":"url",    //要提交的url路径
"type":"type",   //发送请求的方式
"data":data,     //要传送到服务器的数据,后面讲
"dataType":"type",  //指定服务器返回的数据类型
"async":true,     //是否异步,默认是异步
"success":function(result){

	},           //请求成功后要执行的function
"error":function(){

	}           //请求失败执行的function
})



Json

是一种轻量级数据交换格式,用户服务器和客户端之间传递数据
Json的优点:轻量级,结构简单,易于解析

定义json对象:

var jsonObject={"key":value,"key":value,"key":value};

定义json对象的数组

    var userArray=[
        {"id":"1","name":"admin1","password":"0000"},
        {"id":"2","name":"admin2","password":"1111"},
        {"id":"3","name":"admin3","password":"2222"}
    ]



下面附一个只有前端没有后端的,创建json对象(和json数组)把json(和json数组)输入到页面里的方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.5.1.js" type="text/javascript"></script>
    <script src="js/jquery-3.5.1.min.js" type="text/javascript"></script>
</head>
<body>
    <div id="user">
        <div id="id"></div>
        <div id="name"></div>
        <div id="password"></div>
    </div>

    <div id="str1">
        <ul id="str1-ul">

        </ul>
    </div>

<select id="str2-select">

</select>

<table id="userArray" border="2px">
    <tr>
        <td>ID</td>
        <td>userName</td>
        <td>passWord</td>
    </tr>
</table>

</body>
<script>
    var user={"id":1,"name":"zhangsan","password":"0000"};
    $("#id").html("userid:  "+user.id);
    $("#name").html("userName:   "+user.name);
    $("#password").html("userPassWord:  "+user.password);

    var countArray=["china"," America","russian"];
    for (var i=0;i<countArray.length;i++){
        var li="<li>"+countArray[i]+"</li>";
        $("#str1-ul").append(li);
    }
    //调用jqurey数组
    var $countArray=$(countArray);
    $countArray.each(function () {
        var li="<option>"+this+"</option>";
        $("#str2-select").append(li);
    })

    var userArray=[
        {"id":"1","name":"admin1","password":"0000"},
        {"id":"2","name":"admin2","password":"1111"},
        {"id":"3","name":"admin3","password":"2222"}
    ]
    var $userArray=$(userArray);
    $userArray.each(function () {
        var td1="<td>"+this.id+"</td>";
        var td2="<td>"+this.name+"</td>";
        var td3="<td>"+this.password+"</td>";
        $("#userArray").append("<tr>"+td1+td2+td3+"</tr>");
        // $("#userArray").append("<tr>"+"<td>"+this.id+"</td>"+"<td>"+this.name+"</td>"+"<td>"+this.password+"</td>"+"</tr>");
    })

</script>
</html>

页面结果
在这里插入图片描述



接下来是,在servlet中获取数据库数据然后使用StringBuffer写成json的格式并输出的代码(输出单个和多个)

servlet中的代码
这里要用了json的jar包,在这看着下吧
添加链接描述

package servlet;

import com.alibaba.fastjson.JSON;
import pojo.News;
import serverce.NewsServerce;
import serverceImpl.NewsServerceImpl;

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.List;

@WebServlet(name = "/showNews", value = "/showNews")
public class showNews extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String title=request.getParameter("title");
        News n=new News();
        n.setTitle(title);
        System.out.println(n.getTitle());
        NewsServerce newsServerce=new NewsServerceImpl();
        News news=newsServerce.getNewsByTitle(n);
        System.out.println(news.getTitle());
        PrintWriter out=response.getWriter();
        List<News> list=newsServerce.getPageList(1,4);
        request.setAttribute("list",list);
        StringBuffer json=new StringBuffer("[");
        for (int i=0;i<list.size();i++){
            News news1=list.get(i);
            String jason="{\"title\":\""+news1.getTitle().replaceAll("\"","'")+"\",\"content\":\""+news1.getContent().replaceAll("\"","'")+"\"}";
            json.append(jason);
            if (i<list.size()-1){
                json.append(",");
            }
        }
        json.append("]");
        System.out.println(json.toString());

        out.print(JSON.toJSONString(news));
    }
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

}

使用的分层开发,其他的代码和结构可以看
添加链接描述
这里的

News news=newsServerce.getNewsByTitle(n);

返回的是一个news对象,

这里的

List<News> list=newsServerce.getPageList(1,4);

返回的是一个,页码为1,一页为4个news对象的list,这是之前写分页写的方法,这里面数字可以自己修改


这里使用一个循环在循环里用StringBuffer的append方法来添加字符串来拼出json的结构
其中的replaceAll(“”“,”'")是为了防止数据库中的数据万一是双引号开头,我们就给它replace成单引号
json对象的数组中每个json(除了最后一个)后面都有一个逗号,所以用一个if来判断然后再拼上逗号

 StringBuffer json=new StringBuffer("[");
        for (int i=0;i<list.size();i++){
            News news1=list.get(i);
            String jason="{\"title\":\""+news1.getTitle().replaceAll("\"","'")+"\",\"content\":\""+news1.getContent().replaceAll("\"","'")+"\"}";
            json.append(jason);
            if (i<list.size()-1){
                json.append(",");
            }
        }
        json.append("]");

out.print();里的参数就是把servlet里的这个参数传到ajax里的那个succes的函数里参数里,也就是function(data)里的data




然后是页面里的Jquery的ajax代码

<%--
  Created by IntelliJ IDEA.
  User: 王诗韵
  Date: 2022-07-15
  Time: 1:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        html,body{
            height:100%;
        }
        body{
            margin-left: 10%;

        }

        #xia{

            margin:0%;
            width: 80%;
            height: 30%;
            background-color: cadetblue;
        }

    </style>
    <script src="js/jquery-3.5.1.js" type="text/javascript"></script>
    <script src="js/jquery-3.5.1.min.js" type="text/javascript"></script>

    <script src="/js/temp1.js"></script>
</head>
<body>

<div id="xia">
    下
    请输入新闻名<br>
    <form>

        <input type="text" name="title" value="" id="title"><span id="temp"></span><br>
        <button type="button" onclick="sub()">按钮</button>
    </form>

</div>
</body>
<script>
    jQuery(document).ready(function () {

    });
    function sub(){
        var title=$("#title").val()
        $.ajax  ({
            "url":"showNews",
            "data": {"title": title},
            "type":"get",
            // "dataType":"json",
            "success":function (data) {
                $("#temp").html(data);
            },
            "error":function () {
                alert("false");
            }
        });

    }
</script>
</html>

之前要说的那个data:
如果是get请求方式可以直接再url后面拼,我这里用的是带json数据的方法
这里有三种方法详解
添加链接描述




效果(单独的那个getNewsByTitle的)
在这里插入图片描述
循环用StringBuffer拼的那一个的效果
可以使用添加链接描述
来校验JSON格式是否正确
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wsy286047981

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值