开发者社区> 范大脚脚> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Ajax & PHP 边学边练 之四 表单

简介:
+关注继续查看

通过上一篇文章已经了解到如何利用Ajax和PHP对数据库进行数据读取,这样可以动态的获取到数据库的最新数据。本篇则继续介绍通过表单(Form)向数据库中写入数据。

       谈到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值写入数据库。

notask

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"); ?>

源代码下载





本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2009/11/27/1612035.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
jquery+ajax+php 实现注册(报名)
jquery+ajax+php 实现注册(报名)
0 0
php+ajax+highchart+json绘图
php+ajax+highchart+json绘图
0 0
PHP与反ajax推送,实现的消息实时推送功能
index.html 反ajax推送 .send{color:#555;text-align: left;} .require{color:blue;text-align: right;} .
866 0
使用PHP和AJAX制作日历
<p style="margin-top:10px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; color:rgb(102,102,102); font-family:'Open Sans',HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',Helve
1120 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
PHP安全开发_从白帽角度做安全
立即下载
PHP在机器学习上的应用及云深度学习平台的架构设计与实现
立即下载
PHP与APM_技术内幕和最佳实践
立即下载