Ajax&Fetch学习笔记 04、FormData使用

简介: Ajax&Fetch学习笔记 04、FormData使用

一、认识FormData(含方法测试)


FormData是什么?是一个类,能够将表单dom元素传入自动解析其中的表单元素,将name与value以数组的形式来存储。


用途:能够作为参数放置在xhr.send()中,在send()中会对该FormData里的数据进行解析并且合并为指定的字符串形式发送出去,并且该类具有append、delete、get方法能够快速的进行添加得到表单元素的值。


兼容性:IE10及以上可以支持。



示例


测试一下FormData的使用方式,包含遍历、添加、删除测试:


<body>
    <form id="login" action="https://www.imooc.com/api/http/search/suggest?words=js" method="POST">
        用户名:<input type="text" name="username">
        密码:<input type="password" name="password">
        <input type="submit" id="submit">
    </form>
    <script>
        // dom元素中设置id属性,js可以直接通过该值拿到对应dom元素
        console.log(login);//这里login可以直接拿到form这个表单dom元素
        const formData = new FormData(login);
        console.log("FormData=>", formData);
        // 1、添加至formData中以数组形式存储起来
        formData.append("age", 18);
        formData.append("sex", "男");
        // 2、遍历表单元素(表单元素的name与value以数组形式保存起来)
        console.log("遍历表单元素:");
        for (const item of formData) {
            console.log(item);
        }
        // 3、get方法测试
        console.log(formData.get("age"));
    </script>
</body>




实际应用(表单提交校验以及参数添加)

需求:提交表单时进行表单校验或添加额外的一些参数,使用ajax请求去代替form默认表单提交请求!


实现:通过使用阻止默认事件以及使用FormData达到快速集合表单元素内容以及额外添加新的请求参数。


<body>
    <form id="login" action="https://www.imooc.com/api/http/search/suggest?words=js" method="POST">
        用户名:<input type="text" name="username">
        密码:<input type="password" name="password">
        <input type="submit" id="submit">
    </form>
    <script>
        // 需求:我们需要对表单内容进行校验并且添加一些额外的请求
        const sumitbtn = document.getElementById("submit");
        sumitbtn.addEventListener('click', (e) => {
            // 阻止默认事件(表单的提交事件)
            e.preventDefault();
            // 进行表单数据校验:xxxx
            //关键点1:通过FormData获取到表单中的所有表单元素
            const formData = new FormData(login);
            // 1、之后使用ajax请求来代替表单自动提交事件
            const xhr = new XMLHttpRequest();
            xhr.open("POST", 'https://www.imooc.com/api/http/search/suggest?words=js', true);
            // 关键点2:通过FormData来添加我们想要添加的参数值
            formData.append("age", 18);
            formData.append("sex", encodeURIComponent("男"));
            //关键点3:将formData作为参数传递到send()中
            xhr.send(formData);
        }, false);
    </script>
</body>






问题:将FormData作为参数传入send()中执行,你可以看到确实请求发送出去了并且请求体中参数也是与我们设想的一致,但是有一个问题就是当前情况下表单的Content-Type默认为multipart/form-data,也就是传输文件时的类型。


总结:当我们使用FormData作为send()参数时,默认Content-Type为multipart/form-data,我们需要将内容类型设置为指定的类型如json或x-www-form-urlencoded形式,否则后端接收解析时会有问题!!!



相关文章
|
4月前
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
133 2
|
2月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
66 1
|
3月前
|
前端开发 API 开发者
深度剖析:AJAX、Fetch API如何成为Python后端开发者的最佳拍档!
深度剖析:AJAX、Fetch API如何成为Python后端开发者的最佳拍档!
51 4
|
3月前
|
前端开发 JavaScript API
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
在Web开发领域,AJAX与Fetch API是提升交互体验的关键技术。AJAX(Asynchronous JavaScript and XML)作为异步通信的先驱,通过XMLHttpRequest对象实现了局部页面更新,提升了应用流畅度。Fetch API则以更现代、简洁的方式处理HTTP请求,基于Promises提供了丰富的功能。当与Python Web框架(如Django、Flask)结合时,这两者能显著增强应用的响应速度和用户体验,使项目更加高效、高大上。
62 2
|
3月前
|
前端开发 API 开发者
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
52 3
|
4月前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
61 4
|
3月前
|
前端开发 API 数据格式
颠覆传统!AJAX、Fetch API与Python后端,开启Web开发新篇章!
在Web开发领域,技术的快速迭代推动着应用不断进化。传统前后端交互方式已无法满足现代Web应用对高效、实时性和用户体验的需求。AJAX作为异步通信的先驱,使页面无需刷新即可更新部分内容,显著提升用户体验;尽管XML曾是其主要数据格式,但如今JSON已成为主流。Fetch API则以其简洁、灵活的特点成为AJAX的现代替代品,基于Promises的异步请求让开发更加高效。与此同时,Python后端凭借高效稳定和丰富的库支持,成为众多开发者的首选,无论是轻量级的Flask还是全功能的Django,都能为Web应用提供强大的支撑。
48 0
|
3月前
|
XML 前端开发 API
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
43 0
|
3月前
|
前端开发 JavaScript API
告别繁琐!AJAX与Fetch API,让你的前后端沟通畅通无阻,项目效率飙升!
在Web开发中,前后端的顺畅沟通至关重要。传统方法常需频繁刷新页面,影响体验与效率。AJAX和Fetch API的出现简化了这一过程。AJAX利用XMLHttpRequest实现局部页面更新,提升用户体验;Fetch API则以更简洁的语法和强大的功能,进一步优化异步请求处理。两者均能显著提高开发效率,简化代码结构,让项目迭代更快速。拥抱这些技术,让Web开发之路更加顺畅。
42 0
|
5月前
|
XML 前端开发 JavaScript
Ajax、Fetch、Axios
Ajax、Fetch、Axios
91 25