form表单提交和ajax提交的使用场景和差别
共同点
1、都是发送http请求
2、安全性都一样,安全性与提交方式无关
区别
ajax请求:
- 如果表单提交后不需要页面跳转,或者想把跳转的控制权放在前端的话,用ajax提交更方便,这样页面不用刷新,只局部刷新,加载速度快,网络带宽占用低,数据也不会闪屏
- ajax在提交、请求、接收时,是异步进行的,不影响页面其他部分
- ajax提交时,是在后台新建一个请求
- ajax必须要用js来实现,存在调试麻烦、浏览器兼容问题、而且不启用js的浏览器,无法完成操作
- ajax在提交、请求、接收时,整个过程需要使用程序来对其进行数据处理
form表单提交:
举例:
<el-form ref="form" :model="form" label-width="80px" style="width: 500px"> <el-form-item label="活动名称"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="活动区域"> <el-select v-model="form.region" placeholder="请选择活动区域"> <el-option label="区域一" value="shanghai"></el-option> <el-option label="区域二" value="beijing"></el-option> </el-select> </el-form-item> <el-form-item label="活动时间"> <el-col :span="11"> <el-date-picker type="date" placeholder="选择日期" v-model="form.date1" style="width: 100%" ></el-date-picker> </el-col> <el-col class="line" :span="2">-</el-col> <el-col :span="11"> <el-time-picker placeholder="选择时间" v-model="form.date2" style="width: 100%" ></el-time-picker> </el-col> </el-form-item> <el-form-item label="即时配送"> <el-switch v-model="form.delivery"></el-switch> </el-form-item> <el-form-item label="活动性质"> <el-checkbox-group v-model="form.type"> <el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox> <el-checkbox label="地推活动" name="type"></el-checkbox> <el-checkbox label="线下主题活动" name="type"></el-checkbox> <el-checkbox label="单纯品牌曝光" name="type"></el-checkbox> </el-checkbox-group> </el-form-item> <el-form-item label="特殊资源"> <el-radio-group v-model="form.resource"> <el-radio label="线上品牌商赞助"></el-radio> <el-radio label="线下场地免费"></el-radio> </el-radio-group> </el-form-item> <el-form-item label="活动形式"> <el-input type="textarea" v-model="form.desc"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="onSubmit">立即创建</el-button> <el-button>取消</el-button> </el-form-item> </el-form>
data() { return { form: { name: "", region: "", date1: "", date2: "", delivery: false, type: [], resource: "", desc: "", }, }; },
methods: { onSubmit(e) { // console.log(this.form); e.preventDefault(); let formData = JSON.stringify(this.form); // console.log(formData); this.$http.post("", formData).then(function (res) { if (res.status === 2000) { console.log(111111) } else { console.log(222222) } }); }, },
- 如果表单提交以后需要重新跳转页面,或者要将跳转行为放在后端时,用表单提交更合适点,点击触发submit事件,后端控制页面的跳转及数据的传递
- form表单提交会新建一个页面,会在控制器和模板之间传递更多参数
- form是放弃本页面,然后再请求
- form表单提交,是根据表单结构自动完成,不需要代码干预,用submit提交
- form表单的属性中有校验的字段,用户只需要添加正则表达式的校验规则
世界上没有什么偶然,有的只有必然。——壹原侑子