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 一个比较完善的简单文件上传
Mar 25 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
PHP5.3新特性小结
Feb 14 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
php中文字符串截取多种方法汇总
Oct 06 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
Nov 15 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
总结PHP中初始化空数组的最佳方法
Feb 13 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
2020/02/12 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
初学Python实用技巧两则
2014/08/29 Python
Python中字符串的处理技巧分享
2016/09/17 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
python3爬虫怎样构建请求header
2018/12/23 Python
python dict乱码如何解决
2020/06/07 Python
Python 实现自动登录+点击+滑动验证功能
2020/06/10 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
校园达人秀策划书
2014/01/12 职场文书
小学新学期寄语
2014/04/02 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
2015年复活节活动总结
2015/02/27 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android