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 函数语法介绍一
Jun 14 PHP
查找mysql字段中固定字符串并替换的几个方法
Sep 23 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
推荐几个开源的微信开发项目
Dec 28 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
php短信接口代码
May 13 PHP
php处理复杂xml数据示例
Jul 11 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 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
VOLVO车载收音机
2021/03/02 无线电
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
PHP类的反射用法实例
2014/11/03 PHP
php实现可逆加密的方法
2015/08/11 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
JavaScript 高效运行代码分析
2010/03/18 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
python argparser的具体使用
2019/11/10 Python
Tensorflow 多线程设置方式
2020/02/06 Python
python实现最速下降法
2020/03/24 Python
python中threading开启关闭线程操作
2020/05/02 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
户籍证明模板
2014/09/28 职场文书
安全生产月标语
2014/10/07 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
消费者理赔投诉书
2015/07/02 职场文书
企业宣传稿范文
2015/07/23 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书