jq、js的Ajax流程

Ajax交互流程图

转载
图片转载

1,js ajax流程

GET

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>GET</title>
</head>
<body>
	<button type="button" id="bt">发送</button>
	<div id="con"></div>
	<script type="text/javascript">
		var bt = document.getElementById('bt')
		var con = document.getElementById('con')
		
		bt.onclick = function(){
			//1.创建
			var xml = new XMLHttpRequest();
			//2.打开链接
			xml.open("GET",'be.text',false) //打开链接(方法,地址,是否同步)
			//3.监听readystate
			xml.onreadystatechange = function(){ //监听readystate
				//==4准备完毕,==200响应成功
				if(xml.readyState==4&&xml.status==200){
					con.innerHTML = xml.responseText;
					//xml.responseText返回文本
				}
			}
			//4.发送
			xml.send()//发送
		}
		
	</script>
</body>
</html>

POST

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>POST</title>
</head>
<body>
	<form action="" method="POST">
		<input type="text" name="name" id="name" value="" />
		<input type="text" name="age" id="age" value="" />
		<button type="button" id="bt">发送</button>
	</form>
	<div id="con"></div>
	<script type="text/javascript">
		var bt = document.getElementById('bt')
		var con = document.getElementById('con')
		
		bt.onclick = function(){
			//1.创建
			var xml = new XMLHttpRequest();
			//2.获取数据
			var name = document.getElementById('name').value
			var age = document.getElementById('age').value
			//3.建立链接
			xml.open('POST','http://127.0.0.1/echo.php',false)
			//监听
			xml.onreadystatechange = function(){
				if(xml.status==200 && xml.readyState){
					con.innerHTML = xml.responseText
				}
			}
			//设置请求头格式
			xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
			//设置编码形式
			xml.send(`name=${name}&age=${age}`);
		}
		
	</script>
</body>
</html>

2,jq ajax流程

$.ajax()

$.ajax({
    url: "/greet", //链接地址,字符串表示
    data: {name: 'jenny'}, //需发送到服务器的数据,GET与POST都可以
    type: "POST",//"POST" 或 "GET",请求类型
    dataType: "json",//服务器响应的数据类型,字符串表示;当填写为json时,回调函数中无需再对数据反序列化为json
    success: function(data) {
      //请求成功后,服务器回调的函数
        ...
    }
});

$.post()

//参数类似$ajax
$.post(
    "/greet", //链接地址,字符串表示
    {name: 'Brad'},  //需要发送到服务器的数据,格式为{A: '...', B: '...'}
    function(data) {
       //请求成功后,服务器回调的函数
    },
    "json"  //服务器返回数据的格式
);
//2.发送请求到服务器
var name = $('#name').val()
var age = $('#age').val()
var data = {name,age}
$.post('https://www.xxx.com/ajax/echo.php',data)
.then(res=>{
	console.log(res)
})
.catch(err=>{
	console.log(err)
})

$.get()

三种写法,jq的所有ajax方法都可使用

//同上
//1.回调函数写法
$.get(
    "/greet", //链接地址,字符串表示
    {name: 'Brad'},  //需要发送到服务器的数据,格式为{A: '...', B: '...'}
    function(data) {
       //请求成功后,服务器回调的函数
    },
    "json"  //服务器返回数据的格式
);

//2.回调写法
$.get('be.text')
.done(res=>{
	console.log(res)//成功之后的回调
})
.fail(err=>{
	console.log(err)//失败之后的回调
})
.always(xhr=>{
	console.log(xhr)//失败成功都执行
})

//3.promise写法
$.get('be.text')
.then(res=>{
	console.log(res)//成功之后的回调
})
.catch(err=>{
	console.log(err)//失败之后的回调
})

$.getJSON()

$.getJSON(
    "/greet",
    {name: 'Brad'},
    function(data,sta,xhr) {//请求成功后,服务器回调的函数
      //data获取的json对象
      //sta是否成功的状态
      //xhrjq封装的xhr对象
      //补充,JSON.stringify装换json为字符串 
    },
);
$.getJSON(url, data, func);
因为确定服务器返回json编码的数据,故相较于$.get()不必再指定dataType

$.load()

该方法将服务器加载的数据直接插入到指定DOM中。

其中data如果存在则使用POST方式发送请求,不存在则使用GET方式发送请求。

<div id="ret"></div>
$('#ret').load(
    "/greet" .?  #?, //地址后空格加上选择器可以选中选择的标签
    {name: 'Brad'}
);

$.getScript()

使用 AJAX 请求,获取和运行 JavaScript

$("button").click(function(){
    $.getScript("demo_ajax_script.js");
});

猜你喜欢

转载自blog.csdn.net/weixin_44348028/article/details/107632015