Ajax+PHP 边学边练之四 表单

前端之家收集整理的这篇文章主要介绍了Ajax+PHP 边学边练之四 表单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

谈到Form就涉及到一个发送请求方式问题(GET和POST),对于GET和POST的使用和区别在本文就不详细说明了,一般对于Web开发由于POST传值为隐式且传输数据量较大所以比较常用。在本例中对functions.js进行下修改,将创建XMLHttp对象程序创建为一个函数processajax。
<div class="codetitle"><a style="CURSOR: pointer" data="64463" class="copybut" id="copybut64463" onclick="doCopy('code64463')"> 代码如下:

<div class="codebody" id="code64463">
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值写入数据库
<A href="/upload/2009-11/20091127172944480.png">notask
submitform 函数
<div class="codetitle"><a style="CURSOR: pointer" data="56177" class="copybut" id="copybut56177" onclick="doCopy('code56177')"> 代码如下:
<div class="codebody" id="code56177">
function submitform (theform,objID,valfunc){
var file = serverPage;
//检查Form值
var str = getformvalues(theform,valfunc);
//Form全部填写
if (aok == true){
obj = document.getElementById(objID);
//运行Ajax进行传值
processajax(serverPage,"post",str);
}
}

getformvalues 函数
<div class="codetitle"><a style="CURSOR: pointer" data="34151" class="copybut" id="copybut34151" onclick="doCopy('code34151')"> 代码如下:
<div class="codebody" id="code34151">
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 程序:
<div class="codetitle"><a style="CURSOR: pointer" data="73672" class="copybut" id="copybut73672" onclick="doCopy('code73672')"> 代码如下:
<div class="codebody" id="code73672">
<?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表单表单

猜你在找的Ajax相关文章