JavaScript(Ajax)

Ajax:async javascript and xml - 前端和后端进行交互的一种技术

ajax:异步的js技术,作用是前端跟后端进行传递数据

异步的js和xml - 在很久以前,数据都是以xml形式表现的 - 异步的js操作数据

现在的数据,大多以字符串形式表现,因为所有语言中的字符串都是一样的

前端攻城狮的工作:根据数据渲染页面

1.获取数据 - 服务器中

2.根据数据渲染

Ajax - 语法 四步骤

1.创建对象   -  创建电话

var xhr = new XMLHttpRequest()

2.设置请求出参数 -   调用open方法    ---  找号码,选择卡1 还是卡2 

参数一:请求方式

参数二:请求地址

参数三:布尔值 -  是否异步  -  默认true

xhr.open('get', 'http://localhost:8888/test/first', true)

3.监听请求方式  -  将手机放到耳旁等待听声音

xhr.onreadystatechange = function(){

绑定事件的语法 - 什么时候触发?当ajax请求的状态发生了改变的时候就会触发

ajax的状态 - ajax对象.readyState

    console.log(xhr.readyState); // 0 1 2 3 4

    0表示未初始化 - 没创建对象

    1表示对象创建了,但是还没有发送 - send

    2已经send了,对方已经收到消息了,但是还没有彻底看懂我们什么意思,还有很多事情需要准备

    3对方已经在给我们响应信息了,但是信息不完整

    4数据已经完整了 - 可以接收到完整的数据了

监听这次请求的状态是否到最后  -  4

if(xhr.readyState === 4){
    //判断这次请求是否成功  -  是否是2开头的
    //请求状态 -http状态:
    /*
        1开头:正在进行中
        2开头:各种成功
        3开头:重定向 - 缓存
        4开头: 客户端错误
        5开头: 服务端错误
    */
    if(xhr.status >= 200 && xhr.status < 300){
        //表示这次请求是成功,已经完成了
        //接收对方的数据
        var res = xhr.responseText
        console.log(res)
    }
}

如果在面试中,问你:ajax的工作原理 - ajax的4个步骤

在2-4之间顺序是可以互换的

4.发送 - 调用对象的send方法 - 点击拨号

xhr.send()

AJAX练习

var xhr = new XHLHttpRequest  //当构造函数不需要传参数的时候,new的时候就可以省略小括号
xhr.open('get','http://'请求路径'')  //参数3课选项,默认true  -  异步
xhr.send()
xhr.onreadystatechange = function(){
    //判断是否结束
    if(xhr.readyState === 4) {
        //判断请求是否成功
        if(parseInt(xhr.status/100) == 2) {
                //接收数据
                var res = xhr.responseText
                console.log(res)
             // 像对象的字符串+像数组的字符串 - json字符串
             // json字符串转换成json对象 - JSON.parse(json字符串) - 返回json对象
             res = JSON.parse(res)
            console.log(res);
            console.log(res.age);

            // json对象转成json字符串 - JSON.stringify(json对象) - 返回json字符串
        }
   }
 }

请求方式有很多,最常见的就2个,get和post

get请求通常的数据在地址栏,不如post安全

get请求的数据在地址栏,数据大小是受到限制的 - 4kb。post是没有限制的

1T = 1024G

1G = 1024M

1M = 1024kb

1kb = 1024字节

1个汉字,如果是utf-8 = 3个字节

1个汉字,如果是gbk = 2个字节

get  请求:

1.直接在浏览器中输入地址敲回车

2.在页面中点击了a标签转跳到另一个页面,显示另一个页面中的内容,显示内容也是要发送请求的  -   get

3.引人文件的请求也是get请求,link引人css、script引人js,img引人图片、iframe引人html页面

4.form表单默认能提交,默认提交方法也是get

5通过ajax发送get请求

get请求如何携带参数?get请求的参数会放在地址栏中,在?后面的键值对都属于get请求的参数

var xhr = new XMLHttpRequest;
xhr.open('get','http://localhost:8888/test/third?name=李四&age=888')
xhr.send()
xhr.onreadytatechange = function(){
    if(xhr.readyState === 4) {
        if(xhr.status>=200 && xhr.status<300)
            var res = xhr.responseText;
            //将json字符串转成json对象
            res = JSON.parse(res)
            console.log(res)
    }
}

post 请求带参数:

//post携带参数
var xhr = new XMLHttpRequest
xhr open('post','http://localhost:8888/test/fourth')
//post请求的参数要放在send方法中作为参数的  -  必须的字符串
//post请求要带参数必须在send之前设置 头休息
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
//数据在传送之前需要进行编码
xhr.send('name=王五&age=66')
xhr.onreadytatechange = function() {
    if(xhr.readystate === 4){
        if(xhr.status >= 200 && xhr.status < 300) {
            var res = xhr.responseText
            res = JSON.parse(res)
            console.log(res)
        }
    }
}

post请求如果不需要带参数,就可以不设置头信息,不给send中加参数

AJAX请求文件

要请求文件必须使用get请求去做

ajax不光是可以请求后端提供的接口,还可以请求一些文件,获取到文件中的数据

被请求的文件,他的文件类型是没有限制的

ajax如果要请求文件:被请求的文件必须要在web服务器中

web服务器的搭建:利用vscode的插件:live server      preview on web server 

var xhr = new XMLHttpRequest
//xhr.open('get','文件路径.json')
//xhr.open('get','文件路径.css')
//xhr.open('get','文件路径.js')
xhr.open('get','文件路径.xml')
xhr.send()
xhr.onreadystatechange = function(){
    if(xhr.readySate === 4) {
        if(xhr.status >= 200 && xhr.status < 300){
            // var res = xhr.responseText;
            // res = JSON.parse(res)
            // eval函数,可以将一个字符串js代码当做js代码解析执行
            // console.log(res);
            // eval(res) // 当将一段代码当做js代码执行,这段不是js代码,会报错的
            
            // 如果请求的是xml文件,就可以使用独立的另外一种接收数据的方法来接收数据
            var res = xhr.responseXML
            // console.log(res);
            // 将res当做html标签节点来操作
            var class2201 = res.children[0]
            // console.log(class2201);

            var peoples = class2201.querySelectorAll('people')
            // console.log(peoples);
            for(var i=0; i<peoples.length; i++) {
                var nameTag = peoples[i].getElementsByTagName('name')[0]
                // xml的节点中没有innerText只有innerHTML
                console.log(nameTag.innerHTML);

                var ageTag = peoples[i].getElementsByTagName('age')[0]
                // xml的节点中没有innerText只有innerHTML
                console.log(ageTag.innerHTML);
                var sexTag = peoples[i].getElementsByTagName('sex')[0]
                // xml的节点中没有innerText只有innerHTML
                console.log(sexTag.innerHTML);
            }
        }
    }
}

XML:元语言 - 可以开发别的语言的语言 -

例如:html - 作用是存储和传输数据

extension markup language - 可扩展标记语言

这种文件的后缀叫xml

文件中内容是由标签组成 - 自定义标签

必须要有一个文档声明 - <?xml version="1.0" encoding="utf-8"?>

必须要有一个根标签 - 根标签不能叫xml

自定义标签可以有属性 - 跟html标签属性一样

JSON:被请求的文件必须在web服务器中

json字符串/json对象 - json关键字

json格式:  有一种文件后缀就叫json,这种文件存在的目的就是为了存储数据和传输数据

json文件中的数据,必须只能有 一个 对象或数组

键必须加双引号

值如果是字符串,必须加双引号

最后一项后面必须没有逗号

json文件不能有注释

JSON.parse(json字符串):

长的像对象的字符串+像数组的字符串            键必须有双引号

将json字符串转成json对象

只能转换json字符串或数字字符串或布尔值或null

JSON.stringify(json对象)

对象          数组

将json对象转为json字符串

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值