Ajax
ajax的 5种方式
请求方式 和 携带参数写法
1 get 和 delete params 上携带参数
2 post put patch data
新增 数据:POST
axios.post('http://www.itcbc.com:3006/api/addbook', {
bookname: 'post 简写',
author: '我自己',
publisher: '黑马出版社',
appkey: 'abc123abc',
}).then((result) => {
console.log(result)
})
<script>
axios({
url:'http://www.itcbc.com:3006/api/addbook',
method:'POST',
data:{
bookname:'在学前端的靓仔',
author:'太难了是吗,不是的',
publisher:'广州出版社',
appkey:'abc123abc',
},
}).then(result => {
console.log(result);
})
</script>
获取 数据:GET
axios.get('http://www.itcbc.com:3006/api/getbooks').then((result) => {
console.log(result);
})
axios.get('http://www.itcbc.com:3006/api/getbooks',{params:{appkey:'abc123abc'}}).then((result) => {
console.log(result);
})
axios({
url: 'http://www.itcbc.com:3006/api/getbooks?bookname=斗破苍穹&author=我自己',
method: 'GET'
}).then((result) => {
console.log(result);
})
axios({
url: 'http://www.itcbc.com:3006/api/getbooks',
method: 'GET',
'params': {
bookname: '云边的小卖部',
appkey: 'abc123abc',
}
}).then(result => {
console.log(result);
})
删除 数据:DELETE
if (confirm('确实要删除吗')) {
axios({
url: 'http://www.itcbc.com:3006/api/delbook',
method: 'DELETE',
params: {
appkey: 'abc123abc',
id: e.target.dataset.id
}
}).then((result) => {
render()
console.log('是的');
})
} else {
console.log('不是的');
}
完整 更新 :PUT
部分 更新 :PATCH
快速获取 form表单值
JQ 方法
<!-- 引入 jq 文件 -->
<script src="./lib/jquery.js"></script>
<script>
const form = document.querySelector('form')
form.addEventListener('submit',function(event){
event.preventDefault()
const query = $('form').serialize()
console.log(query);
})
</script>
JS 原生方式
const fd = new FormData(this)
const usp = new URLSearchParams(fd)
const query = usp.toString()
'query 只是一个变量名,要配合实际起名
<form class="forms">
<input class="plac1" type="text" placeholder="书籍的名称" name="bookname">
<input class="plac2" type="text" placeholder="作者" name="author">
<input class="plac3" type="text" placeholder="出版社" name="publisher">
<button id="addButton">新增书籍</button>
</form>
const forms = document.querySelector('.forms')
forms.addEventListener('submit', function (e) {
// 阻止 默认行为
e.preventDefault()
</ 需要配合 input 的 name 属性名一起使用,文档要求是什么参数名就要对应是什么参数名
// 以下三老表 是固定搭配
const fd = new FormData(this)
fd.append('appkey','abc123abc') 'appkey 在下面无法传入,所以要先添加进去'
const usp = new URLSearchParams(fd)
const data = usp.toString() 'post 方式是配合 data 使用' 'get 方式就要配合 params'
axios.post('http:
fn()
})
})
原生封装
function toQuery(form) {
const fd = new FormData(form)
const usp = new URLSearchParams(fd)
const query = usp.toString()
return query
}
FormData 文件上传 服务器
<input type="file" name="" id="" />
<img src="" alt="" />
<script src="./lib/axios.js"></script>
<script>
const input = document.querySelector('input');
const img = document.querySelector('img');
input.addEventListener('change', function () {
const url = URL.createObjectURL(this.files[0]);
img.src = url;
const fd = new FormData();
fd.append('avatar', this.files[0]);
axios
.post('http://www.itcbc.com:3006/api/formdata', fd)
.then((result) => {
console.log(result);
});
});
</script>
照片加载本地
<body>
<input type="file">
<img src="" alt="">
<script>
const input = document.querySelector('input')
const img = document.querySelector('img')
input.addEventListener('change', function () {
console.log(this.files);
const url = URL.createObjectURL(this.files[0])
img.src = url
})
</script>
</body>
照片上传到服务器
<body>
<input type="file" name="" id="" />
<img src="" alt="" />
<script src="./lib/axios.js"></script>
<script>
const input = document.querySelector('input');
const img = document.querySelector('img');
input.addEventListener('change', function () {
const url = URL.createObjectURL(this.files[0]);
img.src = url;
const fd = new FormData();
fd.append('avatar', this.files[0]);
axios
.post('http://www.itcbc.com:3006/api/formdata', fd)
.then((result) => {
console.log(result.data.data);
});
});
</script>
</body>
axios 基地址
axios.defaults.baseURL = 'http://www.itcbc.com:3006';
axios({
url: '/api/getbooks',
method: 'GET',
})
XMLHttpRequest
1-4个关键步骤
<script>
const xhr = new XMLHttpRequest()
xhr.open('GET', 'http://www.itcbc.com:3006/api/getbooks')
xhr.send()
xhr.addEventListener('load', function () {
console.log(JSON.parse(this.response));
})
</script>
get 请求携带参数
get请求携带参数 :只有一种方式 在 url上来拼接!!
post 请求携带参数
携带的参数的位置 只能放在 send 方法中
参数类型 3种
'第1种'
const data = {
bookname: '你不知道',
author: '我自己你不知道',
publisher: '斑马出版社',
appkey: 'xseresd',
};
const usp = new URLSearchParams(data);
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://www.itcbc.com:3006/api/addbook');
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
xhr.send(usp);
xhr.addEventListener('load', function () {
console.log(this.response);
});
</script>
'第2种'
<script>
const data = {
bookname: '你不知道',
author: '我自己你不知道',
publisher: '斑马出版社',
appkey: 'xseresd',
};
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://www.itcbc.com:3006/api/addbook');
xhr.setRequestHeader('content-type', 'application/json');
xhr.send(JSON.stringify(data));
xhr.addEventListener('load', function () {
console.log(this.response);
});
</script>
'第 3 种' FormData
<input type="file" name="" id="" />
<script>
const input = document.querySelector('input');
input.addEventListener('change', function () {
const file = this.files[0];
const fd = new FormData();
fd.append('avatar', file);
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://www.itcbc.com:3006/api/formdata');
xhr.send(fd);
xhr.addEventListener('load', function () {
console.log(this.response);
});
});
</script>