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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
mysql 搜索之简单应用
Apr 27 PHP
php URL编码解码函数代码
Mar 10 PHP
PHP+JS+rsa数据加密传输实现代码
Mar 23 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
php实现的mongodb操作类实例
Apr 03 PHP
PHP加密技术的简单实现
Sep 04 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
PHP SESSION机制的理解与实例
Mar 22 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 不同编码下的字符串长度区分
2009/09/26 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python中使用Inotify监控文件实例
2015/02/14 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
Python count函数使用方法实例解析
2020/03/23 Python
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
MySQL面试题
2014/01/12 面试题
英文自荐信格式
2013/11/28 职场文书
营销总经理的岗位职责
2013/12/15 职场文书
党组织领导班子整改方案
2014/10/25 职场文书
教师学习心得体会范文
2016/01/21 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
创业计划书之干洗店
2019/09/10 职场文书
Python+Appium新手教程
2021/04/17 Python
pandas中DataFrame检测重复值的实现
2021/05/26 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python