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语法(2)
Oct 09 PHP
php的memcached客户端memcached
Jun 14 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
PHP实现XML与数据格式进行转换类实例
Jul 29 PHP
php实现简易聊天室应用代码
Sep 23 PHP
必须收藏的php实用代码片段
Feb 02 PHP
php实现的中文分词类完整实例
Feb 06 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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中经典方法实现判断多维数组是否为空
2011/10/23 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
js prototype截取字符串函数
2010/04/01 Javascript
使用JavaScript构建JSON格式字符串实现步骤
2013/03/22 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
实例Python处理XML文件的方法
2015/08/31 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
匡威德国官网:Converse德国
2019/01/26 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
业务内勤岗位职责
2015/04/13 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS