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 网络开发详解之远程文件包含漏洞
Apr 25 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
Smarty变量用法详解
May 11 PHP
PHP如何实现跨域
May 30 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 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
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
前端微信支付js代码
2016/07/25 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
Python实现拼接多张图片的方法
2014/12/01 Python
python处理二进制数据的方法
2015/06/03 Python
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
python画双y轴图像的示例代码
2019/07/07 Python
pow在python中的含义及用法
2019/07/11 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
ddl,dml和dcl的含义
2016/05/08 面试题
数字天堂软件测试面试题
2012/12/23 面试题
大学社团活动策划书
2014/01/26 职场文书
库房保管员岗位职责
2014/04/07 职场文书
交通安全责任书范本
2014/07/24 职场文书