原生js使用ajax请求,form表单提交文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了原生js使用ajax请求,form表单提交文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2978字,纯文字阅读大概需要5分钟。
内容图文
![原生js使用ajax请求,form表单提交文件](/upload/InfoBanner/zyjiaocheng/999/d5e0f79316cc4bdb87d14ec9bcd59ca3.jpg)
get请求
let xhr = new XMLHttpRequest(); //构造函数没有参数的情况,括号可以省略
xhr.open('GET', 'http://www.xxx/api/xxx')
//open函数,指定请求方式和URL地址,如果请求方式是get,传递参数需要把参数列表用?拼接到url地址后面
xhr.send()//send函数,发起Ajax请求,get方法可以写null也可以省略
xhr.onreadystatechange = function() {
// 监听xhr对象的请求状态 readyState 与服务器响应的状态 status
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText)
//原生js获取响应数据通过xhr.responseText 是json数据,使用时需要用JSON.parse来转化
}
}
post请求
let xhr = new XMLHttpRequest();
xhr.open('POST', 'http://www.xxx/api/xxx');
//open函数,指定请求方式和URL地址
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
//设置Content-Type属性(固定写法: post请求必须设置content-type 除非数据是用FromDate获取的 则不需要设置请求头)
xhr.send('XX&XX&XX');
//调用send(),同时将数据提交给服务器,如果数据本身有特殊字符,需要用encodeURIComponent()来转码(encodeURI不能转码特殊字符),如果需要解码可以使用decodeURIComponent()来解码
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText)
}
}
表单数据进行ajax请求
刚方法可以收集并提交文件数据,需要和表单的submit一起使用。
let form = document.querySelector("form");
form.onsubmit = function (e) {
e.preventDefault();
//阻止submit默认提交行为
let fd = new FormData(form);
// 或者 new FormData(this);
}
// 注意,直接查看FormData的实例对象fd是无法查看收集到的数据,通过实例对象的get方法来获取查看。fd.get(name属性值); 就可以获取到fd中收集到的该name的数据.getAll获取到指定name的所有的值,返回的是个数组.
//console.log(fd.get("username"));
//append可以追加(fd中没有收集到的数据,可以使用append进行追加, 是追加到fd实例对象中,在页面中是没有的)
// fd.append(key, value);
//fd.forEach(function (value, key) {
//形参value是收集到的数据,key就是每一项的name
//注意第一个形参是value,第二个形参是key
let xhr = new XMLHttpRequest();
xhr.open("POST","http://www.xxx/api/xxx");
//头 当发送fd数据的时候,POST中头信息忽略不用设置,浏览器会自动帮我们设置好
//xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");不用设置
//如果设置了,请求是可以发送的,但是服务器接收到了数据,无法正常解析。
xhr.send(fd);
//体
//请求体之前是字符串数据 2.0中请求体可以是FormData收集的表单数据
文件域设置
<input type="file" accept="image/*" multiple>
accept 属性 选择文件的类型
.jpg
.jpg,.png
image/png
image/png,image/jpg
image/*
*表示只要是图片,不限格式
multiple 属性 支持多选 写上就可以起效果
文本域美化
<body>
<input style="display: none;" type="file" accept="image/*" multiple>
<button>这是非常好看的按钮</button>
<script>
// 美化文件域的样式 ==> 使用好看的元素来替代文件域
// 点击好看的按钮的时候,模拟点击文件域
document.querySelector("button").onclick = function () {
document.querySelector("input[type=file]").click();
}
</script>
</body>
获取选择文件的个数
文件域的DOM对象有files属性,里面存储了所有选择的文件, 通过其length属性就可以知道选择文件的个数
doucument.querySelector("#file").files.length
内容总结
以上是互联网集市为您收集整理的原生js使用ajax请求,form表单提交文件全部内容,希望文章能够帮你解决原生js使用ajax请求,form表单提交文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。