Ajax+PHP 边学边练之四 表单


Posted in PHP onNovember 27, 2009

谈到Form就涉及到一个发送请求方式问题(GET和POST),对于GET和POST的使用和区别在本文就不详细说明了,一般对于Web开发由于POST传值为隐式且传输数据量较大所以比较常用。在本例中对functions.js进行下修改,将创建XMLHttp对象程序创建为一个函数processajax。

function processajax (serverPage, obj, getOrPost, str){ 
//将创建XMLHttpRequest对象写到getxmlhttp()函数中,并获取该对象 
xmlhttp = getxmlhttp (); 
//GET方式(和前面几篇一样) 
if (getOrPost == "get"){ 
xmlhttp.open("GET", serverPage); 
xmlhttp.onreadystatechange = function(){ 
if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
obj.innerHTML = xmlhttp.responseText; 
} 
} 
xmlhttp.send(null); 
} 
//POST方式 
else{ 
//第三个true参数将打开异步功能 
xmlhttp.open("POST", serverPage, true); 
//创建POST请求 
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=GB2312"); 
xmlhttp.onreadystatechange = function() { 
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
obj.innerHTML = xmlhttp.responseText; 
} 
} 
//表单(Form)传值 
xmlhttp.send(str); 
} 
}

在下图中当点击“Submit”按钮后会激发submitform函数(functions.js),在该函数中会通过getformvalues函数检查Form内容是否都填写完毕,否则提示哪项未填写。当检查通过后会调用process_task.php程序,它会将Form值写入数据库。
Ajax+PHP 边学边练之四 表单 
submitform 函数:
function submitform (theform, serverPage, objID, valfunc){ 
var file = serverPage; 
//检查Form值 
var str = getformvalues(theform,valfunc); 
//Form全部填写 
if (aok == true){ 
obj = document.getElementById(objID); 
//运行Ajax进行传值 
processajax(serverPage, obj, "post", str); 
} 
}

getformvalues 函数:
function getformvalues (fobj, valfunc){ 
var str = ""; 
aok = true; 
var val;     
//遍历Form中所有对象 
for(var i = 0; i < fobj.elements.length; i++){ 
if(valfunc){ 
if (aok == true){ 
val = valfunc (fobj.elements[i].value,fobj.elements[i].name); 
if (val == false){ 
aok = false; 
} 
} 
} 
str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"; 
} 
//将Form值以String形式返回 
return str; 
}

process_task.php 程序:
<?php 
require_once ("dbconnector.php"); 
opendatabase(); 
//对数据预处理 
$yourname = strip_tags (mysql_real_escape_string ($_POST['yourname'])); 
$yourtask = strip_tags (mysql_real_escape_string ($_POST['yourtask'])); 
$thedate = strip_tags (mysql_real_escape_string ($_POST['thedate'])); 
//创建Insert语句 
$myquery = "INSERT INTO task (name, thedate, description) VALUES ('$yourname','$thedate','$yourtask')"; 
//执行SQL语句 
if (!mysql_query ($myquery)){ 
header ("Location: theform.php?message=There was a problem with the entry."); 
exit; 
} 
//返回成功信息 
header ("Location: theform.php?message=Success"); 
?>

源代码下载
PHP 相关文章推荐
PHP.MVC的模板标签系统(一)
Sep 05 PHP
php flush类输出缓冲剖析
Oct 19 PHP
php中二维数组排序问题方法详解
Aug 28 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
PHP编程之设置apache虚拟目录
Jul 08 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
Nov 28 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
thinkPHP5框架路由常用知识点汇总
Sep 15 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 #PHP
完美解决PHP中文乱码
Nov 26 #PHP
php google或baidu分页代码
Nov 26 #PHP
php 接口类与抽象类的实际作用
Nov 26 #PHP
在mysql数据库原有字段后增加新内容
Nov 26 #PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 #PHP
php 运行效率总结(提示程序速度)
Nov 26 #PHP
You might like
PHP函数extension_loaded()用法实例
2015/01/19 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
php实现生成验证码实例分享
2016/04/10 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
微信小程序日历效果
2018/12/29 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python操作MySQL数据库具体方法
2013/10/28 Python
matplotlib中legend位置调整解析
2017/12/19 Python
python保留小数位的三种实现方法
2020/01/07 Python
python中加背景音乐如何操作
2020/07/19 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
销售顾问工作计划书
2014/08/15 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
南京大屠杀观后感
2015/06/02 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL