vue表单数据交互提交演示教程


Posted in Javascript onNovember 13, 2019

欢迎来到 vue-form 表单提交演示间, 你有更好的建议,请告知楼主额!

1. 客户端 html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <!-- 开发环境版本,包含了有帮助的命令行警告 -->
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <!-- 生产环境版本,优化了尺寸和速度 -->
 <!--<script src="https://cdn.jsdelivr.net/npm/vue"></script>-->

 <!-- axios -->
 <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<div id="app">
 <h1>欢迎来到 vue-form 表单提交演示间, 你有更好的建议,请告知楼主额!</h1>
 <table class="table">
  <thead>
  <tr>
   <th>box</th>
   <th>new</th>
   <th>rank</th>
   <th>desc</th>
   <th>title</th>
  </tr>
  </thead>
  <tbody>
  <tr v-for="(v,i) in tabData">
   <td>{{v.box}}</td>
   <td>{{v.new}}</td>
   <td>{{v.rank}}</td>
   <td><input type="text" v-model="tabData[i]['desc']"></td>
   <td>{{v.title}}</td>
  </tr>
  </tbody>
 </table>
 <p>
  <button @click="submit" type="primary">提交</button>
 </p>
</div>

<script type="application/javascript">
 var app = new Vue({
  el: '#app',
  data: {
   tabData: [
    {
     "box": 21650000,
     "new": true,
     "rank": 1,
     "desc": 'desc1',
     "title": "Geostorm"
    },
    {
     "box": 13300000,
     "new": true,
     "rank": 2,
     "desc": 'desc2',
     "title": "Happy Death Day"
    }
   ],
   form: {
    firstName: 'Fred',
    lastName: 'Flintstone'
   }
  },
  methods: {
   submit: function () {
    /**
     * 多维数组对象降级为可供 axios 使用的form表单序列化数据
     **/
    function jsonData(arr) {
     let json = "";
     function fors(data, attr=false) {
      data = JSON.parse(JSON.stringify(data));
      for (let key in data) {
       if(Array.isArray(data[key]) || Object.prototype.toString.apply(data[key]) ==='[object Object]'){
        fors(data[key], true);
       } else {
        if(attr){
         json = json + '&'+ key + '[]' +'=' + data[key];
        }else {
         json = json + '&'+ key +'=' + data[key];
        }
       }
      }
     }
     fors(arr);
     return json;
    }
    console.log(jsonData(this.form));
    console.log('---------------');
    console.log(jsonData(this.tabData));
    console.log('---------------');

    // 提交用户数据
    axios({
     url: './index.php',
     method: 'post',
     data: jsonData(this.tabData),
     /**
      * 1. 如果后台可接受 application/json 方式提交数据 则:
      *  * 不需要 transformRequest 函数处理请求数据
      *  * 不需要 jsonData 函数对数据进行降维处理
      * 2. PHP 后台 可通过以下方式解析 application/json 数据
      *  * $form = file_get_contents('php://input');
      *  * $form = json_decode($form);
      *
      * 3. 当然:**楼主强烈建议**使用 application/json 方式提交数据。
      * 4. 如果大家觉得麻烦可以考虑使用 JQ了
      */
     transformRequest: [function (data) {
      // Do whatever you want to transform the data
      if(Array.isArray(data) || Object.prototype.toString.apply(data) ==='[object Object]'){
       let ret = '';
       for (let it in data) {
        ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
       }
       return ret
      } else {
       return data;
      }
     }],
     headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
     }
    }).then(function (res) {
     console.log('数据提交成功');
     console.log(res.data);
    })
   }
  }
 });
</script>
<style type="text/css">
 table{border-collapse: collapse;border: 1px solid red;}
 th,td{border: 1px solid red;}
</style>
</body>
</html>

2. 服务端,以PHP为例

<?php
header("Access-Control-Allow-Origin:*");
header('Access-Control-Allow-Headers:x-requested-with,content-type');

/**
 * 接收 x-www-form-urlencoded form表单提交数据
 */
echo json_encode($_REQUEST);

/**
 * 1. $GLOBALS ["HTTP_RAW_POST_DATA"];  需要配置服务器才可以使用
 * 2. file_get_contents('php://input');  无须配置即可使用
 *
 * 接收 application/json 提交数据
 */
$form = file_get_contents('php://input');
$form = json_decode($form);
print_r($form);

以上这篇vue表单数据交互提交演示教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jsvascript图像处理—(计算机视觉应用)图像金字塔
Jan 15 Javascript
jquery 删除cookie失效的解决方法
Nov 12 Javascript
详细分析使用AngularJS编程中提交表单的方式
Jun 19 Javascript
javascript实现动态标签云
Oct 16 Javascript
理解JavaScript表单的基础知识
Jan 25 Javascript
javascript实现瀑布流加载图片原理
Feb 02 Javascript
Node.js中process模块常用的属性和方法
Dec 13 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
详解vue-router和vue-cli以及组件之间的传值
Jul 04 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
Sep 20 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
Nov 16 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 #Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 #Javascript
基于vue-cli3和element实现登陆页面
Nov 13 #Javascript
vue data引入本地图片的两种方式小结
Nov 13 #Javascript
vue中的 $slot 获取插槽的节点实例
Nov 12 #Javascript
解决vue v-for src 图片路径问题 404
Nov 12 #Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
Nov 12 #Javascript
You might like
Adodb的十个实例(清晰版)
2006/12/31 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
PHP 实现重载
2021/03/09 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
工商管理专业实习生自我鉴定
2013/09/29 职场文书
资源环境与城市管理专业推荐信
2013/11/30 职场文书
房屋买卖协议书范本
2014/04/10 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
培训督导岗位职责
2015/04/10 职场文书
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技