57-AJAX和jQuery

本文介绍了AJAX技术,它是异步的JS和XML的结合,由谷歌地图带火,能实现网页局部刷新。阐述了AJAX请求由XML HTTP Request发送,以及原生AJAX请求执行流程。还提到jQuery将Ajax操作封装,开发者可专注业务逻辑,此外也提及了JSON可表示对象和数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、AJAX
1.它是js的一种。它是web.发展的(B/S)的必然产物
它是由谷歌公司的谷歌地图带火的,能够提供异步请求技术,每当我们在地图上把鼠标重新移动一个位置的时候,我们按下ctrl+F12会发现了我们的客户端已经发送了一次请求,并且服务器给我们一个200的响应成功的标识,但是我们感觉到网页没有全部更新,只是局部的进行了更新了,这就是我们今天要介绍的AJAX
2.AJAX是请求是有 XML HTTP Request进行发送请求的
XmlHttpRequest(JS对象) xhr它是AJAX的核心引擎
3.AJAX是Asynchronous JavaScript And XML(异步的JS和XML的结合)
异步请求是不重新加载页面,对网页的某部分进行更新,(局部的刷新)
4.AJAX和传统的请求的区别
在这里插入图片描述
5.掌握AJAX请求的执行的流程
在这里插入图片描述二、了解原生的AJAX强求执行的流程

XMLHttpRequest
发送请求:

​ open(请求方式,请求地址,是否异步(默认为true)) 封装请求信息

​ send(请求参数) 发送请求 如果是GET请求 可以不用写 只在请求地址上指定好即可,而如果是POST请求,需要将请求数据写在方法参数中。

接收响应:

​ 事件:on readystate change 我们需要在就绪状态码为4的时候接收响应。

​ 但是响应不一定是有结果的,有些时候是404 500这些错误情况,所以我们应该再添加一个判断,判断响应是否是正常的。

​ 我们可以利用status属性来进行判断 ,它存储的就是HTTP的状态码,例如:200 正常响应 404 资源找不到 500 服务器错误.

在这里插入图片描述

​ 接收数据就是利用reponseText/responseXML将数据转换为对应的格式信息,然后我们好进行操作。

<!--
1.当输入了用户名之后(失去焦点)
2.判断此用户名是否在服务器数据库中存在
-->
用户名:<input type="text" name="uname" onblur="checkUname(this.value)"/>	
<span id="tip"></span>
<script type="text/javascript">
    // 提示对象
    var tipObj = document.getElementById("tip");

    /**
			 * 检查用户名是否存在
			 * @param {Object} uname
			 */
    function checkUname(uname){
        tipObj.innerHTML = "";
        // alert(uname);
        // 验证是否为空
        if("" == uname.trim()){
            tipObj.innerHTML = "<font color='red'>用户名不能为空!</font>";
        }else{
            // 发送请求 从服务器中检查此用户名是否存在
            // -----------------发送请求-----------------------
            // 使用异步引擎XMLHttpRequest对象发送(AJAX)
            // var xhr = new XMLHttpRequest();
            var xhr = getXmlHttpRequest();
            // 封装请求数据
            // xhr.open("GET","user?uname="+uname);
            xhr.open("POST","user");
            // POST要设置请求头内容
            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            // 发送请求
            // xhr.send(null);
            xhr.send("uname="+uname);

            // -----------------接收响应-----------------------
            // 当readystate就绪码为4(读取响应完成)   status为200(服务器正常响应)
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4 && xhr.status == 200){
                    // 将响应的数据取出   1表示存在  0表示不存在
                    var result = xhr.responseText;
                    if(result == 1){
                        tipObj.innerHTML = "<font color='red'>该名称太抢手了!换一个吧!</font>";
                    }else{
                        tipObj.innerHTML = "<font color='green'>此名称非常符合您的身份!</font>";
                    }
                }
            }
        }

    }

    // 解决IE兼容性问题			 
    function getXmlHttpRequest(){
        if(window.XMLHttpRequest){ // 支持此对象
            return new XMLHttpRequest();
        }else{ // IE浏览器
            return new ActiveXObject("Microsoft.XMLHttp");
        }
    }
</script>
2.3 掌握jQuery操作AJAX

jQuery将所有的Ajax操作封装到一个函数$.ajax()里,使得开发者处理Ajax的时候能够专心处理业务逻辑而无需关心复杂的浏览器兼容性和XMLHttpRequest对象的创建和使用的问题。

// 发送AJAX请求 
/*	
url:请求地址
type:请求方式
data:请求数据(如果是GET请求 可以省略)
dataType:接收的响应内容的格式
success:成功响应的回调函数  ==  if(readystate == 4 && status == 200)
		result:响应的结果值
error:错误回调  当出现404  500 等结果时 会触发的回调函数
*/
$.ajax({
    url:"",
    type:"",
    data:"",
    dataType:"",
    success:function(result){

    },
    error:function(){

    }
});
## 3. 掌握JSON的使用

#### 3.1 JSON介绍

**发送请求数据:**xxx?xxx=xxx&xxx=xxx....

**响应回来的数据:**

​	**JSP:**将数据存储在作用域  然后页面再从作用域取出来

​	**HTML->JS:**我们借助于AJAX技术,可以直接接收来自服务端的数据响应。

​			但是很多时候,我们需要接收的是一系列的值,例如数组、集合、对象...

​			可惜JS只能解析字符串。

**想到的解决方案:**纯字符串、XML型字符串(最初目的:数据传输格式)。

JSON(JavaScript  Object Notation)   轻量级的数据交换格式

报文

JS内置了JSON的解析插件。

JSON格式简单、且易于解析。

#### 3.2 JSON的语法

**JSON可以表示普通字符串:**

```json
var jsonStr = "hehe";

**JSON可以表示对象:**JSON强制要求键必须用双引号 当然也可以省略

var jsonObj = {"id":7,"uname":"admin","pwd":"123456","isVIP":true};

3.2JSON可以表示数组(集合…):

var jsonArr = ["xxx","xxx","xxx"];
var jsonObjArr = 
[
	{
		"id": 1,
		"uname": "xiaohan",
		"gender": 1
	},
	{
		"id": 2,
		"uname": "xiaoming",
		"gender": 2,
		"hobbies": [
			"swimming",
			"chess"
		]
	}
]





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值