Ajax及jQuery对ajax的封装

Ajax

什么是Ajax?

Ajax:Asynchronous JavaScript And XML,异步JavaScript和XML技术。不是一门新的语言或技术,是由JavaScript、XML、DOM、CSS等多种已有技术组合而成的一种浏览器端技术。

功能:用于实现与服务器进行异步交互的功能。(Ajax技术实现了网页的局部数据刷新

  • Ajax的核心是XMLHttpRequest对象,该对象在使用之前必须用JavaScript来获取
  • AJAX提供与服务器异步通信的能力,可以在Web页面触发的JavaScript事件中向服务器发出异步请求,执行更新或查询数据库。
  • 当Web服务器的响应返回时,使用JavaScript回调函数和CSS来相应地更新页面的局部内容,而不是刷新整个页面。

客户端发起请求时的异步处理过程:
在这里插入图片描述

XMLHttpRequest对象

方法:

(1)open("method","url"); ------>建立与服务器之间的连接

  • method是请求的方式(get,post)
  • url是远程服务器的地址

(2)send(content):向服务器发送请求,参数content表示请求数据,可以是null
(3)setRequestHeader("header","value"):设置请求头信息,必须放在open之后调用

属性:

(1)onreadystatechange:指定当请求-响应的状态发生改变时执行的回调函数

(2)readyState:是一个状态值,表示请求-响应完成的状态

(3)responseText:服务器响应的文本

(4)status:服务器返回的状态码(例如:200)

拓展:其他常用状态码

200:表示请求-响应成功,并返回了一个页面

204:表示服务器已经成功处理了请求,但是没有返回任何内容

3开头:表示页面发生了重定向

400:表示服务器不理解客户端的请求语法

403:表示服务器拒绝请求

404:表示找不到请求的资源

500:服务器遇到错误无法完成请求

503:服务器无法使用

(5)statusText:伴随状态码的字符串信息(例如:200 对应的字符串是’ok’)

原生Ajax:

//获取XMLHttpRequest对象  (异步请求对象)  
function getXmlHttpRequest(){
    let xmlHttpRequest;
    if(window.ActiveXObject){     //若是IE浏览器
        xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
    }else if(window.XMLHttpRequest){    //非IE浏览器
        xmlHttpRequest=new XMLHttpRequest()
    }
    return xmlHttpRequest;
}

//通过XMLHttpRequest对象向后台发送异步请求
function getServerInfo(){
    //获取ajax的核心对象
    let httpRequest=getXmlHttpRequest();
    //获取到要请求的数据
       //获取数据
    let post_str=数据;

    //调用open方法建立与服务器的连接      -----post请求
    httpRequest.open('post',"http://localhost:3000/index",true);

    //设置请求头信息
    httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

    //设置请求-响应状态发生改变时的回调函数
    httpRequest.onreadystatechange=function (){
        if(httpRequest.readyState==4&&httpRequest.status==200){ //请求-响应成功完成
            //获取响应信息
            let info=httpRequest.responseText;
            //将获取到的响应信息写入到页面的标签里
            document.getElementById('msg').innerHTML=info;

        }
    }
    //向服务器发送请求
    httpRequest.send(post_str);       //请求信息  传送到服务器  相当于  chunk
}

jQuery对Ajax的封装

底层封装

这种封装方式使用起来比较灵活。

$('#id').click(function(){
	$.ajax({
		url:"http://localhost:3000/ind",
		type:"post/get",
		data:$('form').serialize(),   //表单序列化
		dataType:'json',
		success:function(result){
			//请求成功后的回调函数。result中存放的是服务器的响应数据
		},
		error:function(err){
			console.log(err)
		}
	})
})

高层封装

post请求

$.post(url,[data],[callback],[type]) //只能进行post请求
  • data:待发送的key/value参数
  • type:返回内容的格式(xml, html, script, json, text)

例如:

var obj={
	name:'aa',
	age:15
}
$.post("http://localhost:3000/ind",obj,function(result){成功后的处理代码},'json')

get请求

$.get(url,[data],[callback],[type])       //只能进行get请求

参数含义同post请求。

例如:

var obj={
	id:1
}
$.get("http://localhost:3000/home",obj,function(result){成功后的处理代码},'json')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值