form表单提交数据(包括文字和图片)实例

一般来说,form表单提交数据的方式,也就是请求数据到服务器是与传统利用路径api去get或post一个请求到服务器是不一样的,下面就来探讨下关于form表单提交数据至服务器到底是怎么实现的。

话不多说,上代码:

HTML部分:


        <form id="uploadForm" method="post" action="" enctype="multipart/form-data">
          <input type="hidden" name="uid" :value="uid" />
          <input type="hidden" name="token" :value="token" />
          <input v-if="textid != '' && textid != null" type="hidden" name="textid" :value="textid" />
          <input type="hidden" name="title" :value="dataList.title" />
          <input type="hidden" name="content" :value="dataList.content" />
          <input type="hidden" name="category" :value="dataList.category" />
          <input type="hidden" name="jump_type" :value="dataList.jump_type" />
          <input type="hidden" name="extra_id" :value="dataList.extra_id" />
          <input type="hidden" name="extra_type" :value="dataList.extra_type != '0' ? '1' : '0'" />
          <input type="hidden" name="publish_type" :value="dataList.publish_type" />
          <input type="hidden" name="publish_start" :value="dataList.publish_start" />
          <input type="hidden" name="person_type" :value="dataList.person_type" />
          <input type="hidden" name="image" value='[{"name":"cover","pos":13,"type":1,"prio":1}' />
          <div class="navWrapper">
            <ul @click="active_menu_index($event)">
              <li :class="active_idx == '1' ? 'active' : ''" idx="1">内容编辑</li>
              <li :class="active_idx == '2' ? 'active' : ''" idx="2">发送方式</li>
              <li :class="active_idx == '3' ? 'active' : ''" idx="3">发送范围</li>
            </ul>
          </div>
          <!-- 这里可以写任意的HTML标签元素,也可以写在form标签的外面 -->
        </form>

JS部分:

import "../../assets/js/plugin/jquery.form.min.js"
​
    data() {
      return {
        uid: '',
        textid: '',      
        dataList: {
          category: 0,
          jump_type: '0',
          person_type: '0',
          publish_type: 1,
        }
    },
  // 更新优惠券信息
  updateCouponInfo: function(self){
    var option = {
      url: index.baseApiUrl + "?m=mvmtv&c=push&a=update",
      type: "POST",
      dataType: "json",
      success: function (res) {
        if (res.return.code == 0) {
          marketing_manage.callPromptBox(self,res.return.desc);
        }
      },
      error: function (res) {}
    };
    $("#uploadForm").ajaxSubmit(option);
    return false; 
  },

下面我来讲解下,form表单提交需要注意和学习的地方:

1.该实例是在vue环境里演示的,且请求方式为post;

2.在使用form表单提交数据的时候,必须先引用文件jquery.form.min.js,大家可自行百度下载;

3.用form表单提交数据的字段名就是form表单中每个input标签里的name属性的值,比如:form表单中的第一个input标签是这样的:

<input type="hidden" name="uid" :value="uid" />

意思就是在请求数据(请求数据一般都是要带参数的,用户id啊,条目id什么的,这个大家应该都知道吧)的时候,除了api路径之外,后面携带的参数就是形如www.csdn.com/index.php?uid=1。'?'前面的是请求路径,后面的uid就是第一个Input标签name属性的值'uid',即name='uid',而uid的值就是input标签的value属性的值,即value='uid',后面这个uid是一个具体的值,前面的是参数名,不要弄混淆了。由于这里使用到了vue的数据双向绑定,这个uid的值是用户在登录系统的时候就存进cookie中的,是可以在cookie中获取到的。

下面解释下,这里为什么input标签中还有一个属性'type',这个属性大家应该了解过了,它可以有很多的值,比如:'radio','checkbox','button'等很多,而这里取的值是'hidden',意思是在HTML页面中不可见,但它是存在于页面当中的,是占有一定内存的。

但是一定要记住,在form表单中,不能同时存在一样的name值,也就是每个input标签的name属性值一定是唯一的,不然就像js一样,后面会把前面的覆盖掉;

4.其他要传的参数形式跟uid类似,照葫芦画瓢即可,可参考HTML中的代码。其中某些input标签里的value属性没有用到vue的数据双向绑定,是因为它就只有一个值,不会再发生变化;

5.现在来着重讲解下,图片是怎么上传上去的。其实吧,图片上传也是一样的,只是它有格式要求而已,一般来说,图片的上传格式是后台人员规定的,只需要按照后端人员的要求来即可;

6.上述引入的文件是为js代码请求做准备的,另外marketing_manage.callPromptBox();这个函数是我自己写的一个提示用户操作结果的函数,大家可不用引用,只需要在自己有需求的地方写自己的代码即可。

猜你喜欢

转载自blog.csdn.net/Charles_Tian/article/details/82216188
今日推荐