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 Date/Time 类型
Mar 26 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
PHP用GD库生成高质量的缩略图片
Mar 09 PHP
PHP可变函数的使用详解
Jun 14 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
Laravel中Trait的用法实例详解
Mar 16 PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
Oct 21 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
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
PHP脚本数据库功能详解(上)
2006/10/09 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
JavaScript在web自动化测试中的作用示例详解
2019/08/25 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
高质量Python代码编写的5个优化技巧
2017/11/16 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python实现数值积分方式
2019/11/20 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
static函数与普通函数有什么区别
2015/12/25 面试题
工业设计专业推荐信
2013/10/29 职场文书
暑期社会实践学生的自我评价
2014/01/09 职场文书
活动总结模板
2014/05/09 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
第一书记观后感
2015/06/08 职场文书
离婚起诉书范文2016
2015/11/26 职场文书