通过上一篇文章已经了解到如何利用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值写入数据库。

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

源代码下载

转载于:https://blog.51cto.com/186067/1280704

Ajax PHP 边学边练 之四 表单相关推荐

  1. web前端必学功法之一:表单校验(1)

    web前端必学功法之一:表单校验 案例效果: 这里的布局采用的是bootstrap布局 <div class="container" style="margin-t ...

  2. web前端必学功法之一:表单校验(2)

    web前端必学功法之一:表单校验(2) 这里采用另一种写法,jQuery写法,在用jQuery写法之前,一定要引入jquery.js. <div class="container&qu ...

  3. php提交之前验证数据ajax提示,在通过Ajax请求提交之前使用jQuery进行表单验证

    在尝试使用Ajax请求将表单提交到我的php脚本之前,我试图让我的表单进行验证.我查看了stackoverflow并没有找到有用的东西. 我有3个输入和一个提交按钮: $(document).read ...

  4. servlet+JQuery ajax以json的形式的验证表单小实例

    JQuery $.ajax() $.ajax({type: 'POST', //请求方式 一般是get,posturl: url , // 这是必需的,规定把请求发送到哪个 URLdata: data ...

  5. 使用ajax提交图片,提交已经注入文件的表单给后台上传图片 使用ajaxsubmit

    使用jquery form插件进行异步带文件的表单提交 引入form插件与jquery 的js文件后 获取表单的jq对象 然后.ajaxSubmit提交表单即可 实现添加品牌的异步表单提交 funct ...

  6. AJAX学习笔记——发送AJAX的POST请求,模拟from表单提交

    关于AJAX发送POST请求,首先演示一个小案例. 当输入用户名:张三,密码:123.点击发送请求按钮 这是用post请求模拟的表单提交.接下来看一下如何用AJAX发送POST请求 后端代码: @We ...

  7. 前端学习笔记--AJAX的应用(三)form表单改为AJAX提交

     无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程. 参考博客:http://ww ...

  8. ajax提交成功清空表单,Ajax提交数据后,清空form表单

    按钮不同,页面相同,还需要显示的数据不同,这里会由于页面的缓存问题,导致,每次点开这个页面显示的数据相同. 这不是我们想要的.这就需要清楚表单数据了. 如下: $('#myform')[0].rese ...

  9. contactform7 ajax,Contact Form 7 最强大的wordpress表单插件

    10年前 (2011-09-02) | 54,093 views | 54 条评论 | 本文共2961个字 朗读这篇文章 不得不介绍一下这款插件Contact Form 7,真的是很强大,在还没用上C ...

最新文章

  1. php引用计数的基本知识
  2. WinCE 应用程序开机自动方法
  3. mybatis显示sql语句 log4j.properties配置文件
  4. 【操作系统】Semaphore处理读者-写者问题
  5. 【Logstash】记录一次logstash拉取数据很慢的问题
  6. 电脑如何进入bios模式_电脑如何进入bios,你还不收藏?
  7. NOIP模拟题——LGTB与序列
  8. 【问题解决】D:\Users10476\AppData\Local\Programs\Microsoft vsCode\unins000.exe 尝试在目标目录创建文件时发生一个错误:拒绝访问。.
  9. 揭秘!用Python做副业躺赚的4个大招
  10. 互联网应用的两种工作模式:客户/服务器模式与P2P模式
  11. 无法打开FTP在 windows资源管理器中打开FTP站点解决方法
  12. 天天向上的力量---python持续的力量
  13. NVDIMM的应用场景
  14. Linux 字体微调 - windows 效果版
  15. 喜讯!双驰企业正式成为欧盟地平线2020 项目合作伙伴
  16. 数字集成电路设计考试概念总结
  17. 大型欧姆龙PLC NJ系列ST语言Ethercat总线24轴 伺服电池生产线欧姆龙PLC程序大型程序NJ系列
  18. open vas简介
  19. MATLAB计算二元一次方程组
  20. css入门学习day02笔记

热门文章

  1. free是自由,不是免费,从王开源说起
  2. linux下目录的个个文件夹含义
  3. git 挽救忘记提交到哪个分支的代码
  4. office2007安装提示“Windows Installer 服务不能更新一个或多个受保护的Windows文件...
  5. ubuntu root用户没有声音(提示”正在等待声音系统响应”)
  6. gridview、datalist、repeater、FormView、DetailsView的区别详解
  7. String.Split()函数
  8. iOS如何在iTunes网站查看并下载APP的dsym文件
  9. Trie UVALive 7192 Chip Factory (15长春J)
  10. Daily Scrum 10.26