Ajax和jQuery

Ajax和jQuery

可能有些难度,难度就在JS操作这块。

1. 理解Ajax技术原理

1.1 Ajax介绍

AJAX(Asynchronous JavaScript And XML)(异步JavaScript和XML)可以使网页实现异步更新,就是不重新加载整个网页的情况下,对网页的某部分进行更新(局部刷新)。

**同步请求(传统方式):**它是浏览器来帮助我们发送一个请求,然后得到一个页面的完整响应(页面内容重新加载一次)。

**异步请求:**浏览器借助于Ajax核心引擎(XmlHttpRequest对象)来发送请求,得到数据之后再次通过xhr引擎来对数据进行处理接收,然后将其借助于DOM操作展示在页面上。

1.2 Ajax和传统请求的区别【面试题】

2. [了解] 原生Ajax的使用方式:今天敲一遍即可

2.1 API-XMLHttpRequest对象
  • open(method请求方式,url请求地址,是否异步默认为true表示异步请求)

    如果是GET请求,请求参数可以通过url地址传递

    如果是POST请求,请求参数需要通过下方的**send()**方法来指定。

  • send(请求参数)

  • setRequestHeader() 设置请求头信息

  • **onreadystatechange(onReadyState(就绪码/状态)Change) :**当就绪码改变的时候就会触发此事件

  • readyState 就绪码 在它里面存储着当前xhr请求的状态信息

    [外链图片转存失败(img-ny1GMGHa-1564897278315)(D:/bdqn/%E8%AF%BE%E5%A0%82%E7%AC%94%E8%AE%B0/%E7%AC%AC%E5%9B%9B%E7%AB%A0%EF%BC%9AMYSQL,DAO,HTML/day58-Ajax%E5%92%8CjQuery/02_note/assets/1562810239459.png)]

  • status HTTP协议的状态码

  • statusText 等价于状态码 只不过是对应的 提示文本形式 例如:200 == OK 404 Not Found

  • responseText 它是xhr对象用来将响应回来的数据转换为文本的一个属性

  • responseXML…

2.2 案例:用户名验证(是否重复)
// 使用Ajax来发送请求 验证逻辑
var xhr = new XMLHttpRequest();
var url = "user?username="+username;
// 1.发送请求信息
xhr.open("GET",url);
xhr.send(null);

// 2.接收响应信息
// 绑定readyState改变事件 监测结果
xhr.onreadystatechange = function(){
    // readyState 为 4表示xhr接收响应结束
    // status 为 200 表示响应成功(服务器处理成功)
    if(xhr.readyState == 4 && xhr.status == 200){
        // 将响应数据转换为文本
        var data = xhr.responseText;
        if(data == "yes"){ // yes 能用  no 不能用
            tip.innerHTML = "<font color='lawngreen'>用户名可以使用!</font>";
        }else{
            tip.innerHTML = "<font color='red'>这个名称太抢手!</font>";
        }
    }
};
				
// POST请求
// 1.发送请求信息
xhr.open("POST",url);
// POST请求需要设置此请求头  如果需要文件上传 也是将其进行更改
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("username="+username);
.....

如果你需要在IE 6 7 8这些浏览器中使用XHR(Ajax引擎),那么需要特别的处理方式。【解决兼容性问题】

function getXmlHttpRequest(){
    if(window.XmlHttpRequest){
        return new XmlHttpRequest();
    }else{
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
}

3. 掌握jQuery对Ajax技术的封装

// Ajax请求 验证用户名
// 等价于xhr的open() type:请求方式 url:请求地址 async:默认为true 异步请求
$.ajax({
    type:"post",
    // url:"user?username="+username,
    url:"user",
    data:"username="+username,
    async:true,
    dataType:"text", // 等价于xhr.responseText
    success:function(data){ // 它等价于 if(readyState == 4 && status == 200)
        if(data == "yes"){ // yes 能用  no 不能用
            $("#tip").html("<font color='lawngreen'>用户名可以使用!</font>");
        }else{
            $("#tip").html("<font color='red'>这个名称太抢手!</font>");
        }
    },
    error:function(){ // 出现404  500等错误时会触发
        alert("服务器繁忙!请重试!");
    }
});

4. 掌握JSON的使用【重要而且简单】

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

更多参考:https://www.json.cn/wiki.html

var jsonStrArr = ["北京","上海","天津"];
for(var i = 0; i < jsonStrArr.length; i++){
    $("#arr1").append("<li>"+jsonStrArr[i]+"</li>");
}

// -----------------------------------
var jsonObj = {"username":"胡歌","age":12};
$("#obj1").append("用户名:"+jsonObj.username+"<br/>");
$("#obj1").append("年龄:"+jsonObj.age+"<br/>");

// -----------------------------------
var jsonObjArr = [
    {
        "username":"胡歌",
        "age":11
    },
    {
        "username":"刘亦菲",
        "age":10
    }
];
for(var i = 0; i < jsonObjArr.length; i++){
    var user = jsonObjArr[i];
    var tr = "<tr>"
    +"<td>"+user.username+"</td>"
    +"<td>"+user.age+"</td>"
    +"</tr>";
    $("#objTable").append(tr);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值