form表单提交和ajax提交的使用场景和差别

共同点

1、都是发送http请求

2、安全性都一样,安全性与提交方式无关

区别

ajax请求:

  1. 如果表单提交后不需要页面跳转,或者想把跳转的控制权放在前端的话,用ajax提交更方便,这样页面不用刷新,只局部刷新加载速度快,网络带宽占用低,数据也不会闪屏
  2. ajax在提交、请求、接收时,是异步进行的,不影响页面其他部分
  3. ajax提交时,是在后台新建一个请求
  4. ajax必须要用js来实现,存在调试麻烦、浏览器兼容问题、而且不启用js的浏览器,无法完成操作
  5. 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)
 
        }
      });
    },
  },

 

  1. 如果表单提交以后需要重新跳转页面,或者要将跳转行为放在后端时,用表单提交更合适点,点击触发submit事件,后端控制页面的跳转及数据的传递
  2. form表单提交会新建一个页面,会在控制器和模板之间传递更多参数
  3. form是放弃本页面,然后再请求
  4. form表单提交,是根据表单结构自动完成,不需要代码干预,用submit提交
  5. form表单的属性中有校验的字段,用户只需要添加正则表达式的校验规则

 

posted @ 2021-06-29 10:13  俩只猫  阅读(530)  评论(0编辑  收藏  举报