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 相关文章推荐
用libTemplate实现静态网页的生成
Oct 09 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
php数字游戏 计算24算法
Jun 10 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
PHP中的日期加减方法示例
Aug 21 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
php读取本地json文件的实例
Mar 07 PHP
PHP封装的非对称加密RSA算法示例
May 28 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.MVC的模板标签系统(二)
2006/09/05 PHP
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
JavaScript实现京东购物放大镜和选项卡效果的方法分析
2018/07/05 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
Python实现的科学计算器功能示例
2017/08/04 Python
Python处理文本换行符实例代码
2018/02/03 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
pycharm配置git(图文教程)
2019/08/16 Python
使用Pycharm分段执行代码
2020/04/15 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
党校培训思想汇报
2014/01/03 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python