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实现文件上传二法
Oct 09 PHP
如何在PHP中使用Oracle数据库(5)
Oct 09 PHP
php SQL之where语句生成器
Mar 24 PHP
destoon二次开发入门示例
Jun 20 PHP
php提示Failed to write session data错误的解决方法
Dec 17 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
php编程中echo用逗号和用点号连接的区别
Mar 26 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
Yii2实现自定义独立验证器的方法
May 05 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
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
PHP chr()函数讲解
2019/02/11 PHP
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
js日历功能对象
2012/01/12 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
jquery ui对话框实例代码
2013/05/10 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
JavaScript中var关键字的使用详解
2015/08/14 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python实现二分法算法实例
2015/02/02 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
对pandas处理json数据的方法详解
2019/02/08 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
校领导推荐信
2013/11/01 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
创意广告词
2014/03/17 职场文书
节能标语大全
2014/06/21 职场文书
租车协议书范本2014
2014/11/17 职场文书
python缺失值填充方法示例代码
2022/12/24 Python