一、JQuery发送Ajax请求
■ 对于get和post请求,jQuery内部封装了Ajax请求的4个步骤和数据格式的设置
■ 对于Ajax通用请求,jQuery内部封装了Ajax请求的4个步骤和数据格式设置、超时设置、请求失败设置
(1)jquery-server的get请求:
-
客户端html处理:
$('button').eq(0).click(function () {
$.get('http://127.0.0.1:8000/jquery-server', {a:1, b:2}, function (data) {
console.log(data);
}, 'json');
});
-
服务端jquery-server请求的处理: app.get('/jquery-server', (request, response) => {
response.setHeader('Access-Control-Allow-Origin', '*');
const data = {
name: '小黑',
age: 18,
sex: '男'
};
response.send(JSON.stringify(data));
});
(2)jquery-server的post请求:
-
客户端html处理:
$('button').eq(1).click(function () {
$.post('http://127.0.0.1:8000/jquery-server', {a:1, b:2}, function (data) {
console.log(data);
}, 'json');
});
-
服务端jquery-server请求的处理: app.post('/jquery-server', (request, response) => {
response.setHeader('Access-Control-Allow-Origin', '*');
const data = {
name: '小白',
age: 18,
sex: '男'
};
response.send(JSON.stringify(data));
});
?(3)jquery-server的通用ajax请求:
-
客户端html处理: $('button').eq(2).click(function () {
$.ajax({
url: 'http://127.0.0.1:8000/jquery-server/delay',
data: {a:1,b:2,c:3},
type:'get',
headers:{'Content-Type': 'application/x-www-form-urlencoded'},
dataType: 'json',
timeout:4000,
success: function (data) {
console.log(data);
},
error: function () {
console.log('请求出错');
}
});
});
-
服务端jquery-server请求的处理:
app.get('/jquery-server/delay', (request, response) => {
response.setHeader('Access-Control-Allow-Origin', '*');
const data = {
name: '小迟',
age: 18,
sex: '男'
};
setTimeout(() => {
response.send(JSON.stringify(data));
}, 3000)
});
(4) jQuery 发送jsonp请求:
<button>点击发送 jsonp 请求</button>
<div id="result"></div>
<script>
$('button').eq(0).click(function(){
$.getJSON('http://127.0.0.1:8000/jquery-jsonp-server?callback=?', function(data){
$('#result').html(`
名称: ${data.name}<br>
校区: ${data.city}
`);
});
});
</script>
app.all('/jquery-jsonp-server',(request, response) => {
const data = {
name:'小明',
city: ['北京','上海','深圳']
};
let str = JSON.stringify(data);
let cb = request.query.callback;
response.end(`${cb}(${str})`);
});
二、ajax使用fetch函数(类似axios,返回值是Promise对象)
-
客户端html处理: btn2.onclick = function () {
fetch('http://127.0.0.1:8000/fetch-server?a=1&b=2',{
method: 'post',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: {
name: '小明',
age: 16,
sex: '男'
}
}).then(response => {
return response.text();
}).then(response => {
console.log(response);
})
}
-
服务端fetch函数的请求处理: app.post('/fetch-server', (request, response) => {
response.setHeader('Access-Control-Allow-Origin', '*');
const data = '小白白';
response.send(data);
});
|