Ajax+PHP 边学边练之四 表单

   2015-11-17 0
核心提示:通过上一篇文章已经了解到如何利用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值写入数据库。
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");
?>

源代码下载
 
标签: Ajax PHP 表单
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • EXT调用ASP.NET AJAX WebService
    Posted 周五, 04/11/2008 - 16:34 by admin 在asp.net ajax中,使客户端调用WebService变得非常的简单,而且非常有用(个人觉得这个功能是asp.net ajax的核心,很多与客户端的交互都需要这个功能来辅助实现)。那在EXT中,标准的客户端与服务器端交互,使用的
    02-09
  • ajax传数组后台GO语言接收
    js代码如下:function PostHandle(url,data,callback) {$.ajax({type: "Post",url:url,data:data,dataType:'json',async: false,success: callback});}var arr = new Array(); //arr是你想要传递的数组,自己定义即可 PostHandle("/getOriginalGrade",{ "arr&q
    02-09
  • ajax 报0错误 PHP Ajax 跨
    本以为在本地测试不会跨越,结果检查下来就是跨域的问题!!!!来源:https://www.cnblogs.com/xiezn/p/5651093.html 本文通过设置Access-Control-Allow-Origin来实现跨域。例如:客户端的域名是client.runoob.com,而请求的域名是server.runoob.com。如果
    02-09
  • PHP解决ajax跨域的问题 ajax跨域的解决办法
    跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。同源策略:同源策略/SOP(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS
    02-09
  • asp.net 2.0 ajax中使用PopupControlExtender
     最近在著名的4guysfromrolla.com(http://www.4guysfromrolla.com)上,有篇不错的文章(http://aspnet.4guysfromrolla.com/articles/070407-1.aspx),讲的是如何使用aspajx中的controltookit中的PopupControlExtender控件来实现一些特殊的效果,比如文中举了
    02-09
  • 在asp.net中使用ajaxpro与一般页面的区别
    1.一般页面:Server.UrlEncode,Ajaxpro:HttpUtility.UrlEncode一般页面:Server.UrlDecode,Ajaxpro:HttpUtility.UrlDecode2.Server.MapPath的使用Ajaxpro:最好是从网站根目录来取 一般页面:  string strPath = Server.MapPath("../xslt/trans.xslt");-
    02-09
  • Asp.net Ajax的start和web.config配置
    微软于2006年11月9日发布了ASP.NET AJAX 1.0 Beta 2 从最初的 Atlas 到 ASP.NET AJAX 1.0 Beta 1 再到 Beta 2 ,这一个基于.NET 的 AJAX 框架已经趋于完整,越来越多的.NET开发者也开始使用这套框架所提供的强大功能建立自己的AJAX应用,在从使用Atlas到AS
    02-09
  • asp.net ajax get 调用(和post不一样,直接返回
    script type="text/javascript" $(document).ready(function () {$('#Label1').click(function () {$.ajax({type: 'GET',url: 'djb.aspx?sfzh=' + '3720510',dataType: 'json',success: function (data) { //不需
    02-09
  • ajaxFileUpload + lua-resty-upload 上传文件
    ajaxFileUpload下载地址地址:http://pan.baidu.com/s/1mgJypz6html页面!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"htmlheadmeta http-equiv="Content-Type" content="text/html; charset=UTF-8"/titleUntitled/titlescript src=&qu
    02-08
  • ajax调用php失败如何解决 ajax请求失败处理方式
    这篇文章主要讲解了“ajax调用php失败如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ajax调用php失败如何解决”吧!ajax调用php失败是因为ajax只能发起GET请求,而不能发POST请求,否则报500错
    02-08 ajaxphp
点击排行