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递归实现无限分类生成下拉列表的函数
Aug 08 PHP
ThinkPHP中实例Model方法的区别说明
Aug 21 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
Jul 03 PHP
深入理解php的MySQL连接类
Jun 07 PHP
PHP实现的博客欢迎提示功能(很特别哦)
Jun 05 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
laravel实现于语言包的完美切换方法
Sep 29 PHP
TP5框架请求响应参数实例分析
Oct 17 PHP
php+iframe 实现上传文件功能示例
Mar 04 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
如何去掉文章里的 html 语法
2006/10/09 PHP
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
python实现在线翻译
2020/06/18 Python
python pillow库的基础使用教程
2021/01/13 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
社区七一党员活动方案
2014/01/25 职场文书
年会搞笑主持词
2014/03/27 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
小学生暑假生活总结
2015/07/13 职场文书
关于车尾的标语大全
2015/08/11 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书