ajax 提交 注册表单 到MySQL数据库
今天按照要求,要做一个登陆、注册表单,本来样式做好就行了,本来咱就是干前端的,但让咱自己都没想到的是,不到一个小时竟然都干完了,实在闲的蛋疼,就想到链接数据库玩,遥想当年,毕竟咱也是写过后台的,哪知,咳咳,真要是写了,真是一万个草拟吗,在心中奔腾。
公司项目是用TP写的,所以要搞适应tp的方式,搞了半天,发现不会!原来学的,都还给学校里的项目导师光哥啦!
于是G、B、狗,边查边学,最后还是被咱赶出了,在此记一下!
这是html的注册表单:
<div class="register-box">
<div class="login-dialog-header">
<button class="btn-login-dialog-close" type="button">
×
</button>
<div class="login-dialog-tt">
<h2 class="">注册</h2>
</div>
</div>
<div class="login-dialog-body">
<form id = 'register-box-form'>
<div class="login-usr-name">
<label for>账号:</label>
<input type="text" name="name" class="inpt-style inpt-login-usr-name" placeholder="邮箱/手机号">
</div>
<div class="login-usr-pwd">
<label for>密码:</label>
<input type="password" name="pwd" class="inpt-style inpt-login-usr-pwd" placeholder="设置密码">
</div>
</form>
</div>
<div class="login-dialog-footer">
<button type="button" class="btn-style btn-block login-dialog-submit ">注册</button>
<div class="go-login"><去登录</div>
</div>
</div>
下面是ajax:
function submitClickEvent(){
$('.register-box .login-dialog-submit').click(function(){
//数据序列化,但是不知道在PHP哪里怎么接住??以后解决
//var formData = $("#register-box-form").serialize();
var name=$('.register-box .inpt-login-usr-name').val();
var pwd=$('.register-box .inpt-login-usr-pwd').val();
//console.log(name,pwd);
$.ajax({
type: "POST",
url: "index/index/insert",
cache: false,
data:{
name:name,
pwd:pwd
},
success:function(data){
alert("注册成功!");
},
error:function(){
alert('注册失败!');
}
});
});
}
接着是tp5里面的代码:
// 处理表单数据
public function insert() {//此方法对应js里的 url: "index/index/insert", $data = [
'id'=>time(),
'userName' => $_POST['name'],
'pwd' => $_POST['pwd']
]; //error_log('dd2'.$data, 3, "./my-errors.log");
////echo Db::table('bdn_user_table')->insertAll($data)?'成功!':'失败!';
if(Db::table('bdn_user_login_table')->insert($data)){
$this->ajaxReturn($_POST,'添加信息成功',1);
}else{
$this->ajaxReturn(0,'添加失败',0);
}
}
先留着,所不定,咱转行干后端,能用上!!
<script type="text/JavaScript">
//序列化
var data = $('#form_FanXuLie').serialize();
data = decodeURIComponent(data ,true);//调用decodeURIComponent(XXX,true);将数据解码,解决中文乱码问题
console.log(data)//=> 'name=val&age=val&charId=val'
//反序列化 对jquery ajax的serialize()值的反序列化
var data = 'name=王硕&age=20岁&beizhu=测试反序列化';
data.split('&').forEach(function (item) { //js的forEach()方法
item = item.split('=');
var name = item[0],
val = item[1];
$('#form_FanXuLie [name=' + name + ']').val(val);
});
</script>
js和php中数组序列化(serialize和unserialize)
对于url中参数值的传递,在数组方面可能显得无能为力。但在php中,我们可以使用serialize()将数组序列化,
得到一个字符串,这样就可以很轻易的传递了。当得到该字符串后,我们使用unserialize()将这个字符串反序列化,
得到原来的数组。
然而,我们在js和js或者js和php中怎么传递数组呢?因为在js中,没有这样(serialize)的函数,
所以我们只有使用自定义的函数将数组转化为字符串,这样虽然也能实现,但运行效率却降低了。
在ajax中,我们可以使用xml标准数据存储格式进行数据传递,但如果只是传递简单的比如“0”,“1”之类的,
根本用不着xml那样复杂的格式,那样反而降低了效率。对于简单的数组,
我们也不必先按照xml死板的格式封装数据,而只需要使用函数serialize()将它序列化,
然后通过xmlhttprequest返回给客户端。在客户端,因为是js处理,所以不能用php现成的unserialize()函数来将它反序列化,
于是需要引用到两个js文件:utf.js(编码转换)和Phpserializer.js(封装serialize和unserialize函数)。
这两个文件网上可以下载到。
具体用法:
scrīpt src="./utf.js">scrīpt src="./Phpserializer.js">
在服务器端:$arr是从数据库查询的记录数组。$arr=serialize($arr);
客户端:var s=xmlHttpRequest.responseText;
var a=unserialize(s);
这样,a这个数组和$arr是完全一样的。数组传递原来也这么简单。
上面的js引用没有写完整,因为新浪的编辑器好像不支持直接写代码是的。
另附加一些查到的有用信息,部分没有经过验证,使用时留心!
ajax 提交 注册表单 到MySQL数据库的更多相关文章
- ajax提交form表单
1. ajax提交form表单和不同的form表单的提交主要区别在于,ajax提交表单是异步提交的,而普通的是同步提交的表单. 2. from视图部分 <form id="loginF ...
- ajax提交form表单资料详细汇总
一.ajax提交form表单和不同的form表单的提交主要区别在于,ajax提交表单是异步提交的,而普通的是同步提交的表单.通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新.这意味 ...
- jquery实现ajax提交form表单的方法总结
本篇文章主要是对jquery实现ajax提交form表单的方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 方法一: function AddHandlingFeeToRefund( ...
- jquery的ajax提交form表单方式总结
方法一: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement/AjaxModifyOrderServic ...
- Ajax提交Form表单的一种方法
待提交的表单 <form id="updatePublicKey" enctype="multipart/form-data"> <div c ...
- Ajax提交from表单
一,使用Ajax提交form表单到后台传参问题 1,首先,定义一个form: <form class="form-horizontal" role="form&qu ...
- ajax提交form表单问题
form表单提交数据可以省下大量大量获取元素的代码,局部刷新时也可以用ajax提交form表单,但是要先把表单序列化,再把后台javaBean对象序列化,但是你有可能前后台都执行了系列化,但是后台还是 ...
- Ajax提交form表单内容和文件(jQuery.form.js)
jQuery官网是这样介绍form.js A simple way to AJAX-ify any form on your page; with file upload and progress s ...
- 使用ajax提交form表单,包括ajax文件上传【转载】
[使用ajax提交form表单,包括ajax文件上传] 前言 转载:作者:https://www.cnblogs.com/zhuxiaojie/p/4783939.html 使用ajax请求数据,很多 ...
随机推荐
- 美国评出2016最值得去的旅游胜地+纯电动车郊游记+DIY一个小电动车
美国评出2016最值得去的旅游胜地(10) http://bbs.miercn.com/bd/201510/thread_569397_1_10.html 自带发电机! 北汽E150 EV纯电动车郊游 ...
- Java集合(2):LinkedList
一.LinkedList介绍 LinkedList也和ArrayList一样实现了List接口,但是它执行插入和删除操作时比ArrayList更加高效,因为它是基于链表的.基于链表也决定了它在随机访问 ...
- LeetCode:逆波兰表达式求值【150】
LeetCode:逆波兰表达式求值[150] 题目描述 根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除 ...
- POJ - 2763 Housewife Wind (树链剖分/ LCA+RMQ+树状数组)
题意:有一棵树,每条边给定初始权值.一个人从s点出发.支持两种操作:修改一条边的权值:求从当前位置到点u的最短路径. 分析:就是在边可以修改的情况下求树上最短路.如果不带修改的话,用RMQ预处理LCA ...
- Servlet Rest
http://www.blogjava.net/yongboy/archive/2010/10/01/333609.html
- SSDB 使用笔记
1. SSDB中scan key_start key_end limit ,key_start 和 key_end 是指字母的顺序,不是数字. 2. 进入客户端:./ssdb-cli -p 8888
- CC3中的2D转换
2D转换方法: translate() rotate() scale() skew() matrix() 1.translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动 ...
- Python 类的方法,下划线有什么不同?
问: 1,以一个下划线开头的命名 ,如_getFile2,以两个下划线开头的命名 ,如__filename3,以两个下划线开头和结尾的命名,如 __init__()4,其它这些命名有什么不同吗? 答:
- React之JSX语法
1. JSX的介绍 JSX(JavaScript XML)——一种在React组件内部构建标签的类XML语法.react在不使用JSX的情况下一样可以工作,然而使用JSX可以提高组件的可读性,因此 ...
- cookie 与 session 的区别详解
[转]cookie 与session 的区别详解 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来.当 ...