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 相关文章推荐
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
浅谈PHP 闭包特性在实际应用中的问题
Oct 30 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
PHP中file_get_contents高?用法实例
Sep 24 PHP
php获取数组元素中头一个数组元素值的实现方法
Dec 20 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
php实现通过ftp上传文件
Jun 19 PHP
PHP检查URL包含特定字符串实例方法
Feb 11 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
新闻分类录入、显示系统
2006/10/09 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
2017/07/10 PHP
js读取本地excel文档数据的代码
2010/11/11 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
浅谈vue-cli 3.0.x 初体验
2018/04/11 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python中实现从目录中过滤出指定文件类型的文件
2015/02/02 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
python使用fork实现守护进程的方法
2017/11/16 Python
python批量赋值操作实例
2018/10/22 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
最新pycharm安装教程
2020/11/18 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
联想C++笔试题
2012/06/13 面试题
高中生职业生涯规划书
2014/02/24 职场文书
分家协议书
2014/04/21 职场文书
初中中等生评语
2014/12/29 职场文书
邀请书模板
2015/02/02 职场文书
项目合作意向书
2015/05/08 职场文书
2016新年感言
2015/08/03 职场文书
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技