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请求数据,很多 ...
随机推荐
- knockout 学习使用笔记-----event绑定传参ko属性
在绑定event的时候,需要传入ViewModal 本身的属性值(其实没必要,js直接能获取到,此处为测试相关参数的传递),如果不加(),会将绑定的function传进event(至于为嘛传了个fun ...
- 解决hash冲突的办法
1.开发定址法 2.再哈希法 3.链地址法 4.建立一个公共溢出区
- Django:学习笔记(1)——开发环境配置
Django:学习笔记(1)——开发环境配置 Django的安装与配置 安装Django 首先,我们可以执行python -m django --version命令,查看是否已安装django. 如果 ...
- Android位置权限以及数组寻找索引的坑
填坑与求解惑来的. 一.Android 危险权限,来自官方文档的坑??? Android开发者都知道,Android 6.0 之前,权限申请只需要在 AndroidManifest.xml 文件中声明 ...
- Android 属性自定义及使用获取浅析
一.概述 相信你已经知道,Android 可使用 XML 标签语言进行界面的定义.每个标签中有一个一个的属性,这些属性有相应的属性值.例如: <cn.neillee.composedmenu.R ...
- ICMP与PING解析
1.ICMP格式 ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消 ...
- Sybase:存储过程中采用临时表存储统计数据
Sybase:存储过程中采用临时表存储统计数据 作用 很有效的提升统计查询速度,对于数据量亿级.千万级多表之间关联查询,非常有效: 使用 --无需定义临时表,直接使用 --自动释放临时表 select ...
- shell 中的 eval 及 crontab 命令
eval eval会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令:如果命令中含有变量的间接引用,则保证间接引用的语义.也就是说,eval命令将会首先扫描命令行进行所有的置 ...
- [算法] 将单链表的每K个节点之间逆序
题目 给定一个单链表的头结点,实现一个调整单链表的函数,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点. 解答 使用栈结构 import java.util.Stack; pu ...
- PHP练习题二
1.抓取远程图片到本地,你会用什么函数? fsockopen, A 2.用最少的代码写一个求3值最大值的函数. function($a,$b,$c){* W0 z* u6 k+ e. L a: }5 ...