• Ajax


    Ajax 请求

    什么是Ajax请求

    • AJAX 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发 技术。

    • Ajax 是一种浏览器通过 js 异步发起请求,局部更新页面的技术。

    • Ajax 请求的局部更新,浏览器地址栏不会发生变化 局部更新不会舍弃原来页面的内容

    原生 AJAX 请求的示例

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    	<head>
    		<meta http-equiv="pragma" content="no-cache" />
    		<meta http-equiv="cache-control" content="no-cache" />
    		<meta http-equiv="Expires" content="0" />
    		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    		<title>Insert title here</title>
    		<script type="text/javascript">
    			function ajaxRequest() {
    // 				1、我们首先要创建XMLHttpRequest 
    				var xmlhttprequest = new XMLHttpRequest();
    // 				2、调用open方法设置请求参数
    				xmlhttprequest.open("GET","http://localhost:8080/JavaWeb_Ajax_war_exploded/ajaxServlet?action=javaScriptAjax",true);
    				//4、在send方法前绑定onreadystatechange事件,处理请求完成后的操作。
    				xmlhttprequest.onreadystatechange = function () {
    					if (xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200){
    
    						var jsonObj = JSON.parse(xmlhttprequest.responseText);
    						//把响应的数据显示在页面上
    						document.getElementById("div01").innerHTML = "编号:"+jsonObj.id+",姓名:"+jsonObj.name;
    					}
    				}
    // 				3、调用send方法发送请求
    				xmlhttprequest.send();
    
    			}
    		</script>
    	</head>
    	<body>	
    		<button onclick="ajaxRequest()">ajax request</button>
    		<div id="div01">
    		</div>
    	</body>
    </html>
    

    jQuery 中的 Ajax 请求

    $.ajax 方法

    • url 表示请求的地址
    • type 表示请求的类型 GET 或 POST 请求
    • data 表示发送给服务器的数据 格式有两种: 一:name=value&name=value 二:{key:value}
    • success 请求成功,响应的回调函数
    • dataType 响应的数据类型 常用的数据类型有: text 表示纯文本 xml 表示 xml 数据 json 表示 json 对象
                                    // ajax请求
    				$("#ajaxBtn").click(function(){
    					$.ajax({
    						url:"http://localhost:8080/16_json_ajax_i18n/ajaxServlet",
    						// data:"action=jQueryAjax",
    						data:{action:"jQueryAjax"},
    						type:"GET",
    						success:function (data) {
    							// alert("服务器返回的数据是:" + data);
    							// var jsonObj = JSON.parse(data);
    							$("#msg").html(" ajax 编号:" + data.id + " , 姓名:" + data.name);
    						},
    						dataType : "json"
    					});
    				});
    

    $.get 方法和$.post 方法

    • url 请求的 url 地址

    • data 发送的数据

    • callback 成功的回调函数

    • type 返回的数据类型

                                    // ajax--get请求
    				$("#getBtn").click(function(){
    
    					$.get("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryGet",function (data) {
    						$("#msg").html(" get 编号:" + data.id + " , 姓名:" + data.name);
    					},"json");
    					
    				});
    				
    				// ajax--post请求
    				$("#postBtn").click(function(){
    					// post请求
    					$.post("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryPost",function (data) {
    						$("#msg").html(" post 编号:" + data.id + " , 姓名:" + data.name);
    					},"json");
    					
    				});
    

    $.getJSON 方法

    • url 请求的 url 地址

    • data 发送给服务器的数据

    • callback 成功的回调函数

                                    // ajax--getJson请求
    				$("#getJSONBtn").click(function(){
    					$.getJSON("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryGetJSON",function (data) {
    						$("#msg").html(" getJSON 编号:" + data.id + " , 姓名:" + data.name);
    					});
    				});
    

    表单序列化 serialize()

    serialize()可以把表单中所有表单项的内容都获取到,并以 name=value&name=value 的形式进行拼接。

                                    // ajax请求
    				$("#submit").click(function(){
    					// 把参数序列化
    					$.getJSON("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQuerySerialize&" + $("#form01").serialize(),function (data) {
    						$("#msg").html(" Serialize 编号:" + data.id + " , 姓名:" + data.name);
    					});
    				});
    

    使用Ajax验证用户名是否可用

    protected void ajaxExistsUsername(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 获取请求的参数username
            String username = req.getParameter("username");
            // 调用userService.existsUsername();
            boolean existsUsername = userService.existsUsername(username);
            // 把返回的结果封装成为map对象
            Map<String,Object> resultMap = new HashMap<>();
            resultMap.put("existsUsername",existsUsername);
    
            Gson gson = new Gson();
            String json = gson.toJson(resultMap);
    
            resp.getWriter().write(json);
        }
    
    
                            // 页面加载完成之后
    			$(function () {
    
    				$("#username").blur(function () {
    					//1 获取用户名
    					var username = this.value;
    					$.getJSON("http://localhost:8080/book/userServlet","action=ajaxExistsUsername&username=" + username,function (data) {
    						if (data.existsUsername) {
    							$("span.errorMsg").text("用户名已存在!");
    						} else {
    							$("span.errorMsg").text("用户名可用!");
    						}
    					});
    				});
    
  • 相关阅读:
    unity3d热更新插件uLua学习整理
    结合axios对项目中的api请求进行封装
    移动端适配剖析
    vscode如何调试node项目(给node项目打断点)
    mac上使用cnpm搭建npm私有仓库,并上传/下载私有npm包
    前端常见的兼容性问题--web端和移动端
    react树形选择组(支持:单选,多选,全选)
    MongoDB 与 Mysql 的对比
    使用div 的 contenteditable属性,实现输入编辑,输入 "#" 出现下拉选择
    前端单元测试,以及给现有的vue项目添加jest + Vue Test Utils的配置
  • 原文地址:https://www.cnblogs.com/ITHSZ/p/13963855.html
Copyright © 2020-2023  润新知