1.情境:如果你新建了个网站,却没有数据库服务器,如何把你的表单信息,提交到服务端后台,收集数据。

2.思路:如果用传统的form action 提交到一个form.php页面,此时只能存储一次数据,再次提交会覆盖之前的数据。

第一种方法:此时考虑新建一个文件可以存放数据。txt文件可以存储数据,json文件也可以存储数据,此案例采用把收集到的数据为数组格式,直接存入php文件中,并在另一个文件中读取存入的数组。

异步提交form表单数据,使用$ajax

表单样式和数据呈现表单:

1.使用Vuejs和Element-UI组件设计表单验证

    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="NAME & SURNAME*" prop="name">
<el-input v-model="ruleForm.name" name="username"></el-input>
</el-form-item>
<el-form-item
prop="email"
label="EMAIL*"
>
<el-input v-model="ruleForm.email" name="email"></el-input>
</el-form-item>
<el-form-item
prop="phone"
label="PHONE"
>
<el-input v-model="ruleForm.phone" name="phone"></el-input>
</el-form-item>
<el-form-item label="POSITION*" prop="position">
<el-select v-model="ruleForm.position" name="position">
<el-option v-for="item in options" :key="item.value" :value="item.value" :label="item.label"></el-option>
</el-select>
</el-form-item>
<input name="submitdate" type="hidden" id="inittime" value=""/>
<el-form-item>
<el-button type="primary" @click="register">提交</el-button>
</el-form-item>
</el-form>
//此时表单验证的一些设定
<script>
// 创建根实例,使用vuejs和Element-UI
new Vue({
el: '#app',
data() {
return {
options: [{
value: 'CustomerRepresentative',
label: 'Customer Representative'
}, {
value: 'RetentionRepresentative',
label: 'Retention Representative'
}, {
value: 'HumanResources',
label: 'HumanResources'
}],
default: 'CustomerRepresentative',
ruleForm: {
name: '',
email: '',
phone:'',
position:'CustomerRepresentative',
},
rules: {
name: [
{ required: true, message: 'Please enter your name and surname *', trigger: 'blur' },
],
email:[
{ required: true, message: 'Please enter your email *', trigger: 'blur' },
{ type: 'email', message: 'Please enter your correct email *', trigger: ['blur', 'change'] }
],
phone:[
{ required: true, message: 'Please enter your phone *', trigger: 'blur' },
]
},
position: [
{ required: true, message: '请选择活动区域', trigger: 'change' }
],
}
},
</script>

创建form表单

2。收集表单数据,并使用formData,使用Jquery的ajax提交数据给新的文件

<script>
methods: {
register: function () {
/**date**/
var date = new Date();
var seperator1 = "-";
// var seperator2 = ":";
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
//时间格式为YY-MM-DD HH:mm:ss
var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
// + " " + date.getHours() + seperator2 + date.getMinutes()
// + seperator2 + date.getSeconds();
$('#inittime').val(currentdate); let data=this.ruleForm;
let formData=new FormData();
formData.append('name',data.name);
formData.append('email',data.email);
formData.append('phone',data.phone);
formData.append('position',data.position);
formData.append('submitdate',currentdate);
// console.log(formData.get('submitdate'));
$.ajax({
url:"form.php",
type:'post',
cache:false,
processData: false,
contentType: false,
data:formData, success: function(msg){
alert('Thanks,Your information has submitted');
// console.log(msg);
// $("#result").append("你的名字是:"+msg.name+"");
}
}); }
},
</script>

定义FormData数据,ajax提交表单

!!!:此时的dataType可以省略不写,会自动读取所提交的数据格式。

3.定义提交的form.php文件,并把收集到的数组保存到新的php文件中(此时我的文件:menugroup.php)

<?php
header("Content-type:text/html;charset=utf-8");
$username = $_POST['name']; //获取索引
$email = $_POST['email'];
$phone = $_POST['phone'];
$position = $_POST['position'];
$submitdate = $_POST['submitdate'];
$dd = array('username'=>$username,'email'=>$email ,'phone'=>$phone,'position'=>$position,'date'=>$submitdate); //转换成数组类型
$cachefile ='menugroup.php';
echo (var_export($dd,true));
//exit();
$arr = include('menugroup.php');
$arr[] =$dd;
$str = "<?php return ".var_export($arr,true).';';
echo $str;
file_put_contents($cachefile,$str);
//alert("保存成功!"); ?>

提交数据的form.php文件

4.messages.php读取数组为table表单在页面中。

<?php
// 从文件中读取数据到PHP变量
header("Content-type:text/html;charset=utf-8");
$json_string = include('menugroup.php');
// $json_string=stripslashes(html_entity_decode($json_string)); // 把JSON字符串转成PHP数组
// $data =json_decode($json_string, true ); // 显示出来看看
// var_dump($json_string);
// echo $data['name'];
echo '<table border="1" width="700" align="center" cellpadding="0" cellspacing="0">';
echo '<caption><h1>Application Information</h1></caption>';
echo '<tr bgcolor="#dddddd">';
echo '<th>ID</th><th>NAME</th><th>EMAIL</th><th>PHONE</th><th>POSITION</th><th>DATE</th>';
echo '</tr>';
foreach($json_string as $k => $v){
// echo $k . '<br>';
// print_r($v);
// echo '<br>';
echo '<tr><td>'.($k+1).'</td>';
foreach ($json_string[$k] as $index => $value) {
// echo $k . '<br>';
// echo $index . '<br>';
echo '<td align="center">'.$value.'</td>';
}
echo '</tr>';
}
echo '</table>';
?>

读取数据到页面中

下面是尝试使用纯JavaScript实现ajax异步提交数据

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
var formresult = xmlHttp.responseText;
alert('sussess');
// console.log(formresult);
}
}
xmlHttp.open("post", "form.php",true);
xmlHttp.send(formData);

PHP实现没有数据库提交form表单到后台并且显示出数据列表(Vuejs和Element-UI前端设计表单)的更多相关文章

  1. form enctype:"multipart/form-data",method:"post" 提交表单,后台获取不到数据

    在解决博问node.js接受参数的时候,发现当form中添加enctype:"multipart/form-data",后台确实获取不到数据,于是跑到百度上查了一下,终于明白为什么 ...

  2. multipart/form-data post 方法提交表单,后台获取不到数据

    这个和servlet容器有关系,比如tomcat等. 1.get方式 get方式提交的话,表单项都保存在http header中,格式是 http://localhost:8080/hello.do? ...

  3. vue2.0+Element UI 实现动态表单(点击按钮增删一排输入框)

    对于动态增减表单项,Element UI 官方文档表单那一节已经介绍得很清楚了,我之前没有看见,绕了很多弯路,这里针对点击按钮增删一排输入框的问题做一个总结. 效果图如下 存在一排必填的姓名与手机号, ...

  4. Element ui 中的表单提交按钮多次点击bug修复

  5. vue 使用 element ui动态添加表单

    html部分 <div class="hello"> <el-form :model="dynamicValidateForm" ref=&q ...

  6. element ui动态生成表单数据与校验(后台传入数据)

    前言 最近有一个需求是通过后台返回的数据,生成表单并添加校验.在做的过程中,动态表单挺好做,关键是校验.困扰了我2天,最后通过查找资料和"运气"终于解决了.解决问题关键点:vue的 ...

  7. Jquery通过Ajax方式来提交Form表单

    今天刚好看到Jquery的ajax提交数据到服务器的方法,原文是: 保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: ...

  8. AJAX异步提交form表单

    记录: 网上有说怎么做,没说怎么接收,打印了一下数据,记录一下取值: 比如说有如下form: <form id="form1" name="form1" ...

  9. html表单通过关联数组向php后台传多条数据并遍历输出

    通过表单向php后台传多条数据,以关联数组方式呈现,废话不多说,代码附上: html表单代码,方式我设置为get: <form action="php/cart.php" m ...

  10. 数据库之mysql篇(3)—— mysql创建/修改数据表/操作表数据

    创建数据表:create table 数据表名 1.创建表规范 create table 表名( 列名   数据类型    是否为空   自动排序/默认值  主键/外键/唯一键, 列名   数据类型 ...

随机推荐

  1. 【Java】try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后?

    try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行,在 return 前还是后? package com.test ...

  2. 基于UDP的服务器端/客户端

    基于UDP的数据I/O函数 //成功时返回传入的字节数,失败时返回-1 ssize_t sendto (int __fd, const void *__buf, size_t __n, int __f ...

  3. OpenHarmony 3.2 Beta源码分析之MediaLibrary

    1.MediaLibrary介绍 OpenAtom OpenHarmony(以下简称"OpenHarmony")MediaLibrary媒体库提供了一系列易用的接口用于获取媒体文件 ...

  4. K8s技术全景:架构、应用与优化

    本文深入探讨了Kubernetes(K8s)的关键方面,包括其架构.容器编排.网络与存储管理.安全与合规.高可用性.灾难恢复以及监控与日志系统. 关注[TechLeadCloud],分享互联网架构.云 ...

  5. Java 抽象类与方法:实现安全性与代码重用

    Java 内部类 简介 在 Java 中,可以嵌套类(即类内部的类),称为内部类.嵌套类的目的是将属于一起的类分组,从而使您的代码更可读和可维护. 访问内部类 要访问内部类,请创建外部类的对象,然后创 ...

  6. java内存模型(jmm)概念初探

    1.和java内存结构的区别: 很多人会把jmm和Java内存结构搞混,网上搜到的一些文章也是如此,java内存结构就是我们常说的堆,栈,方法区,程序计数器..., 当jvm虚拟机启动的时候,会初始化 ...

  7. 【Java面试指北】单例模式

    单线程下的单例模式: public class Singleton { private static Singleton instance; private Singleton() {} public ...

  8. xml转voc数据集(含分享数据集)

    数据集的链接:行人检测数据集voc数据集(100张) 原始图片和.xml数据目录结构如下: . └── data ├── 003002_0.jpg ├── 003002_0.xml ├── 00300 ...

  9. CC1TransformedMap链学习

    跟着看了白日梦组长的视频,记录一下调试学习过程 CC1链学习 TransformedMap链 ObjectInputStream.readObject() AnnotationInvocationHa ...

  10. dojo\dart脚本编程语言

    Dojo是一个用于构建高效.可扩展的Web应用程序的开源JavaScript框架.它提供了一系列功能丰富的模块和组件,包括DOM操作.事件处理.异步编程.动画效果等.Dojo还具有强大的用户界面(UI ...