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实现多服务器session共享之NFS共享的方法
Mar 16 PHP
PHP学习之数组的定义和填充
Apr 17 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
刷新PHP缓冲区为你的站点加速
Oct 10 PHP
YII2 实现多语言配置的方法分享
Jan 11 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
PHP实现生成数据字典功能示例
May 24 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
PHP队列场景以及实现代码实例详解
Feb 26 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
一个php作的文本留言本的例子(一)
2006/10/09 PHP
JavaScript创建命名空间的5种写法
2014/06/24 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
jQuery bind事件使用详解
2011/05/05 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
python中list常用操作实例详解
2015/06/03 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
在python中实现对list求和及求积
2018/11/14 Python
django 通过URL访问上传的文件方法
2019/07/28 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
授权委托书格式模板
2014/04/03 职场文书
2014机关干部学习“焦裕禄精神”思想汇报
2014/09/19 职场文书
十八大标语口号
2014/10/09 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
JS setTimeout与setInterval的区别
2022/04/20 Javascript
mysql幻读详解实例以及解决办法
2022/06/16 MySQL