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

news/2024/12/31 6:13:19/

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或者getasync:true,     //异步为true,同步为falseurl: 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或者getasync:true,     //异步为true,同步为falseurl: 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或者getasync:true,     //异步为true,同步为falseurl: 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.ppmy.cn/news/539719.html

相关文章

基于uprobe的调试调优浅析

uprobe与krobe对应&#xff0c;动态附加到用户态调用函数的切入点称为uprobe&#xff0c;相比如kprobe 内核函数的稳定性&#xff0c;uprobe 的函数由开发者定义。uprobe是用户态的探针&#xff0c;它和kprobe是相对应的&#xff0c;kprobe是内核态的探针。uprobe需要制定用户态…

尼日利亚4g频段_全球主要4G频段资料全解.doc

全球主要4G频段资料全解 OperatorCountry(MHz)BandDuplexmodeLaunchdateAlgerie Telecom?Algeria阿尔及利亚(?)(?)TDDMay 2014Movicel?Angola安哥拉18003FDDApr 2012Unitel?Angola21001FDDDec 2012Surfline?Ghana加纳26007FDDAug 2014YooMee?Ivory Coast象牙海岸230040T…

4G网速实测与WIFI使用对比

5G即将普及&#xff0c;4G数据也基本能够满足需要&#xff0c;实测为日常使用地点&#xff08;两处&#xff09;和办公室WIFI&#xff0c;如果要求时延低&#xff0c;任何场合都推荐光钎&#xff0c;wifi和4g信号时延都要明显高于有线网络。 在线测网速链接&#xff1a;http:/…

# Android12 wifi和4G同时使用

Android12 wifi和4G同时使用 1.新建device/qcom/qssi/wifiand4g.sh #! /system/bin/sh ip rule add from all lookup main pref 100 2.device/qcom/项目名/init.target.rc中加入 on property:sys.startwifiand4gyes start wifiand4g service wifiand4g /system/bin/wifiand4g…

Linux驱动开发|4G通信

4G通信 使用有线网络或者 WIFI 有很多限制&#xff0c;因为要布线&#xff0c;即使是 WIFI 也得先布线&#xff0c;然后接个路由器。因此在不方便布线的场合&#xff0c;就可以通过 4G 连接到网络。下面介绍如何在 I.MX6U-ALPHA 开发板中使用 4G 来实现联网功能 一、4G网络连…

oracle 日志大于4g,Oracle日志文件达到4G

解决方案一:停止监听器 1)LSNRCTL进入交互模式 cmd 输入 LSNRCTL 2)执行set current_listener LISTENER 3)set log_status off 4)stop 停止监听器 5)手工删除ADR指定的监听日志路径下的listener.log文件 6)start重启监听器 7)status查看状态 解决方案二:脚本定时清除log文件 …

[4G5G专题-27]:架构-UE终端的4G+5G双连接详解

目录 第1章. 什么是多连接 1.1 多连接概述 1.2 多连接的聚合和分离点的分类 1.3 多连接好处 1.4 双连接的本质 1.5 多连接的控制面与数据面连接方法分类 1.6 1C2U模式下数据承载的三种方式 1.7 分清各种场景的基本思路 1.8 关于终端与基站之间的无线控制信道 第2章 4…

Python基础篇(十一):装饰器

装饰器 前言1. 装饰器的定义2. 装饰器的应用3. 装饰器的语法4. func(*args, **kwargs) 前言 装饰器是Python中一种强大的函数或类修饰机制&#xff0c;用于在不修改原始函数或类代码的情况下&#xff0c;对其进行功能扩展或修改。装饰器基于函数式编程的概念&#xff0c;通过将…