第8讲:$.ajax方法使用详解

news2025/5/19 5:03:01

jQuery对象上面定义了Ajax方法($.ajax()),用来处理Ajax操作。调用该方法后,浏览器就会向服务器发出一个HTTP请求。ajax方法有很多属性,但并非每次调用都要使用所有属性,本讲详细介绍了每个属性的作用,并给出具体的调用案例,分别从服务器返回文本格式数据,JSON格式数据及xml格式数据。

​​​​​​​

$.ajax方法使用规范

$.ajax()方法常用参数列表

属性名称

说明

type

设置请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。

async

设置是否异步,默认值: true。默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。

url

发送请求的地址

data

请求到服务器的参数,将自动转换为请求字符串格式,格式:{参数名1:值1,参数名2:值2.....}

success

要求为Function类型的参数,请求成功后调用的回调函数,格式:function(data[, textStatus]){} ,data:由服务器返回,并根据dataType参数进行处理后的数据,textStatus描述状态的字符串,可以省略。

error

要求为Function类型的参数,请求失败时被调用的函数。function(){alert('服务器异常!')}

dataType

预期服务器返回的数据类型。可选值为:text,json,xml,html,script,jsonp

complete

要求为Function类型的参数,请求完成后调用的回调函数(无论请求成功或失败时均调用)。

ajax方法有很多属性,但并不是每次调用都需要使用,根据情况使用部分参数即可

具体案例演示

前端代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JQuery中ajax支持应用</title>
    <!--加载JQuery库-->
    <script src="../js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        function send(){
            var userName = $("#userName").val();
            console.log("userName=" + userName);
            var url = "/ajaxProj/t4AjaxServlet"
            $.ajax({
                type:'post',    //post或者get
                async:true,     //异步为true,同步为false
                url: url,
                //需要提交到后台的参数,键值对格式,多个参数逗号分隔
                data:{
                    userName:userName,
                    id:1,
                    age:15,
                    action:'text'
                },
                success:function (data){
                    //响应成功执行该函数
                    console.log("执行成功:"+data);
                    $("#fonts").text(data);
                },
                error:function (data){
                    //响应失败执行该函数,比如404,500,405等
                    console.log("执行失败:" + data);

                },complete:function(){
                    //不管执行成功,还是执行失败,最后都会执行
                    console.log("执行结束");
                },
                dataType:"text"
            });
        }
        function sendJson(){
            var userName = $("#userName").val();
            console.log("userName=" + userName);
            var url = "/ajaxProj/t4AjaxServlet"
            $.ajax({
                type:'post',    //post或者get
                async:true,     //异步为true,同步为false
                url: url,
                //需要提交到后台的参数,键值对格式,多个参数逗号分隔
                data:{
                    userName:userName,
                    id:1,
                    age:15,
                    action:'json'
                },
                success:function (data){
                    //响应成功执行该函数
                    console.log("执行成功:"+data);
                    var li = "<table>"
                    li += "<tr><td align='right'>id:</td><td>"+data.id+"</td></tr>"
                    li += "<tr><td align='right'>用户名称:</td><td>"+data.userName+"</td></tr>"
                    li += "<tr><td align='right'>用户年龄:</td><td>"+data.age+"</td></tr>"
                    li += "</table>";
                    $("#fonts").html(li);
                },
                error:function (data){
                    //响应失败执行该函数,比如404,500,405等
                    console.log("执行失败:" + data);

                },complete:function(){
                    //不管执行成功,还是执行失败,最后都会执行
                    console.log("执行结束");
                },
                dataType:"json"
            });
        }
        function sendXml(){
            var userName = $("#userName").val();
            console.log("userName=" + userName);
            var url = "/ajaxProj/t4AjaxServlet"
            $.ajax({
                type:'post',    //post或者get
                async:true,     //异步为true,同步为false
                url: url,
                //需要提交到后台的参数,键值对格式,多个参数逗号分隔
                data:{
                    userName:userName,
                    id:1,
                    age:15,
                    action:'xml'
                },
                success:function (data){
                    //响应成功执行该函数
                    console.log("执行成功:"+data);
                    let membersData = data.getElementsByTagName("person");
                    console.log(membersData);
                    let id = membersData[0].childNodes[0].firstChild.nodeValue;
                    let userName = membersData[0].childNodes[1].firstChild.nodeValue;
                    let age = membersData[0].childNodes[2].firstChild.nodeValue;
                    let li = "<table>"
                    li += "<tr><td align='right'>id:</td><td>"+id+"</td></tr>"
                    li += "<tr><td align='right'>用户名称:</td><td>"+userName+"</td></tr>"
                    li += "<tr><td align='right'>用户年龄:</td><td>"+age+"</td></tr>"
                    li += "</table>";
                    $("#fonts").html(li);
                },
                error:function (data){
                    //响应失败执行该函数,比如404,500,405等
                    console.log("执行失败:" + data);

                },complete:function(){
                    //不管执行成功,还是执行失败,最后都会执行
                    console.log("执行结束");
                },
                dataType:"xml"
            });
        }
    </script>
</head>
<body>
    <h2 align="center">JQuery中ajax支持应用</h2>
    <hr>
    用户名:<input type="text" name="userName" id="userName">
    <input type="button" value="返回文本内容" onclick="send()">
    <input type="button" value="返回json内容" onclick="sendJson()">
    <input type="button" value="返回xml内容" onclick="sendXml()">
    <hr>
    服务器返回的结果:<font id="fonts" color="red" size="2"></font>
</body>
</html>

后端代码如下:

package com.servlet;

import com.alibaba.fastjson.JSONObject;

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;

@WebServlet(name = "T4AjaxServlet",value = "/t4AjaxServlet")
public class T4AjaxServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //获取返回的值
        String action = request.getParameter("action");
        String userName = request.getParameter("userName");
        String id = request.getParameter("id");
        String age = request.getParameter("age");
        System.out.println("userName=" + userName + ",id=" + id + ",age=" + age);
        //输出
        if(action.equals("text")) {
            out.println("返回结果:userName=" + userName);
        }else if(action.equals("json")){
            //字符串类型的值必须用双引号,如果是数值类型可以省略双引号
            //String msg ="{\"userName\":\"" +userName+ "\",\"id\":\"" + id + "\",\"age\":" + age + "}";
            //System.out.println(msg);
            //out.println(msg);
            //用fastjson包的类实现
            JSONObject person = new JSONObject();
            person.put("id",id);
            person.put("userName",userName);
            person.put("age",age);
            out.println(person.toJSONString());

        }else if(action.equals("xml")){
            StringBuffer sb = new StringBuffer();
            sb.append("<persons>");
            sb.append("<person><id>"+id+"</id><userName>"+userName+"</userName><age>"+age+"</age></person>");
            sb.append("</persons>");
            out.println("<?xml version='1.0' encoding='utf-8' ?>");
            out.println(sb.toString());
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    }
}

运行效果

 

ajax方法还有一些简便写法。

$.get():发出GET请求。
$.getScript():读取一个JavaScript脚本文件并执行。
$.getJSON():发出GET请求,读取一个JSON文件。
$.post():发出POST请求。
$.fn.load():读取一个html文件,并将其放入当前元素之中。

$.post方法参考

            //调用JQuery的post方法提交数据
            let url = "/ajaxProj/collegeServlet"
            $.post(
                url,
                {
                    参数1:值1,
                    参数2:值2,
                    参数3:值3
                },
                function (data){
                    //执行成功返回的结果
                    console.log(data);
                },
                "json"
            );

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/678020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot项目中使用Tomcat、Undertow、jetty等容器

文章目录 SpringBoot项目中使用Tomcat、Undertow、jetty等容器&#xff1b;1. 默认使用Tomcat容器&#xff0c;直接运行项目即可&#xff1a;Java -jar xxx.jar2. 使用undertow容器2-1 引入Maven依赖&#xff0c;同时屏蔽内置Tomcat2-2 Undertow容器的常用配置参考2-3 一个特别…

常见的端口后续网络链接问题及解决办法

路由器中设置端口映射的主要作用&#xff0c;就是让Internet上的其他用户&#xff0c;可以访问你路由器下面电脑中的数据(软件、文件)。假设现在外网有一台ADSL直接拨号上网的电脑&#xff0c;所获得的是公网IP。然后它想访问局域网内的电脑上面的网站&#xff0c;那么就需要在…

C语言中有关char数组和char指针的区别

有关 C语言中字符数组和字符指针之间的区别&#xff0c;让我们先看一下下面的例子&#xff1a; void test() {//arr is array of characterschar arr[12] "Aticleworld";//ptr is pointer to charchar *ptr "Aticleworld"; } 现在&#xff0c;让我们比较…

合宙Air724UG Cat.1模块硬件设计指南--键盘接口

键盘接口 简介 在电路设计中&#xff0c;通常需要较多的外部输入&#xff0c;如果每个按键都单独去占用一个IO接口&#xff0c;就会非常浪费资源&#xff0c;为了减少I/O口的占用&#xff0c;通常将按键排列成矩阵形式&#xff0c;即矩阵键盘。 特性 KEYIN0。扫描键盘输入0&am…

【博弈论笔记】第五章 完全但不完美信息动态博弈

文章目录 第五章 完全但不完美信息动态博弈5.1 不完美信息动态博弈5.1.1 相关概念5.1.2 不完美信息动态博弈的表示5.1.3 不完美信息动态博弈的子博弈 5.2 完美贝叶斯均衡5.2.1 完美贝叶斯均衡的定义5.2.2 关于判断形成的进一步理解 5.3 单一价格二手车博弈模型5.3.1 单一价格二…

Windows下Java环境配置教程

✨博客主页: XIN-XIANG荣 ✨系列专栏:【Java SE】 ✨一句短话: 难在坚持,贵在坚持,成在坚持! ✨博客说明: 尽己所能&#xff0c;把每一篇博客写好&#xff0c;帮助自己熟悉所学知识&#xff0c;也希望自己的这些内容可以帮助到一些在学习路上的伙伴&#xff0c;文章中如果发现错…

排序算法——归并排序(递归与非递归)

归并排序 以升序为例 文章目录 归并排序基本思想核心步骤递归写法实现代码 非递归处理边界情况实现代码 时间复杂度 基本思想 归并排序是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用&#xff1a;将已有序的子序列合并&#xff…

python:并发编程(十九)

前言 本文将和大家一起探讨python并发编程的实际项目&#xff1a;win图形界面应用&#xff08;篇一&#xff0c;共八篇&#xff09;&#xff0c;系列文章将会从零开始构建项目&#xff0c;并逐渐完善项目&#xff0c;最终将项目打造成适用于高并发场景的应用。 本文为python并…

跨模态检索论文阅读:(PTP)Position-guided Text Prompt for Vision-Language Pre-training

(PTP)Position-guided Text Prompt for Vision-Language Pre-training 视觉语言预训练的位置引导文本提示 摘要 视觉语言预训练(VLP)已经显示出将图像和文本对统一起来的能力&#xff0c;促进了各种跨模态的学习任务。 然而&#xff0c;我们注意到&#xff0c;VLP模型往往缺乏…

Redis 2023面试5题(五)

一、Redis主节点岩机导致数据全部丢失怎么恢复数据 1. 备份恢复&#xff1a; 如果你已经设置了定期备份&#xff0c;可以使用备份文件进行恢复。首先&#xff0c;停止Redis服务器&#xff0c;将备份文件复制到Redis数据目录中&#xff0c;然后启动Redis服务器。这将恢复备份时…

Maven学习1

概述 主要学习记录Maven仓库相关知识&#xff0c;如何借助上传项目jar包到GitHub、Nexus Sonatype&#xff0c;&#xff0c;以及搭建自己的Nexus Sonatype私服&#xff0c;然后在Maven项目的pom文件引入使用&#xff0c;参考Maven官网文档:https://central.sonatype.org/publi…

0基础学习地平线QAT量化感知训练

文章目录 1. 背景2. 基础理论知识3. 文件准备与程序运行4. 代码详解4.1 导入必要依赖4.2 主函数4.3 构建fx模式所需要的float_model4.4 不同阶段模型的获取4.5 定义常规模型训练与验证的函数4.6 float与qat训练代码解读——float_model/qat_model4.7 模型校准部分的代码解读——…

day58_LayUI

Layui 一、介绍 layui&#xff08;谐音&#xff1a;类 UI) 是一套开源的Web UI解决方案&#xff0c;采用自身经典的模块化规范&#xff0c;并遵循原生HTML/CSS/JS的开发方式&#xff0c;常适合网页界面的快速开发。layui 区别于那些基于MVVM 底层的前端框架&#xff0c;它更多…

2020新基建决赛-misc-ezPIC

2020新基建决赛-misc-ezPIC 一、概要 1、标题&#xff1a;ezPIC 2、关键字&#xff1a;盲水印、png宽高 3、比赛&#xff1a;2020新基建决赛 4、工具&#xff1a;python、010editor 二、开始 1、题目分析 在此感谢csdn上星辰之门和零食商人两位大佬给出的解题思路。 题目解…

黑马头条-day02

文章目录 前言一、文章列表加载1.1 需求分析1.2 表结构分析1.3 导入文章数据库1.4 实现思路1.5 接口定义1.6 功能实现 二、freemarker2.1 freemarker简介2.2 环境搭建&&快速入门2.2.1 创建测试工程 2.3 freemarker基础2.3.1 基础语法种类2.3.2 集合指令2.3.3 if指令2.3…

#10036. 「一本通 2.1 练习 2」Seek the Name, Seek the Fame

字符串的题真的要比dfs&#xff0c;bfs的简单好多 大致思路 首先&#xff0c;再度重复哈希函数 H ( C ′ ) H ( C , k n ) − H ( C , k ) ∗ b n H(C)H(C,kn)-H(C,k)*b^n H(C′)H(C,kn)−H(C,k)∗bn具体模板详见我的上几篇题解 哈希函数模板对此题&#xff0c;我们只需要对…

RPC 框架架构设计

RPC 框架架构设计 RPC 又称远程过程调用&#xff08;Remote Procedure Call&#xff09;&#xff0c;用于解决分布式系统中服务之间的调用问题。通俗地讲&#xff0c;就是开发者能够像调用本地方法一样调用远程的服务。下面我们通过一幅图来说说 RPC 框架的基本架构。 RPC 框架…

(二)WPF - 应用程序

一、运行程序的过程&#xff1a; &#xff08;1&#xff09; Application 对象被构造出来。&#xff08;2&#xff09;Run方法被调用。&#xff08;3&#xff09;Application.Startup 事件被触发&#xff08;4&#xff09;用户代码构造一个或多个 Window 对象。&#xff08;5&…

Hibernate知识总结

关于Hibernate映射 关于Hibernate的映射要说明的一点就是关于ID的访问权限&#xff0c;property以及field的区别。以前使用的时候根本没有注意过这个问题&#xff0c;这里简单的强调一下。 表的主键在内存中对应一个OID对象描述标识符&#xff0c;需要在xml的配置文件中要指定对…

数据结构——队列的实现

队列&#xff0c;又称为伫列&#xff08;queue&#xff09;&#xff0c;计算机科学中的一种抽象资料类型&#xff0c;是先进先出&#xff08;FIFO, First-In-First-Out&#xff09;的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端&#xff08;称为rear&…