利用js调用后台php进行数据处理原码

該方法已經屬於過時方法,其中關鍵的地方也從論壇上得來的,我只是把它消化吸收后重新写了更全面的出来。公布出來只是希望更多的新手能從中學到一些東西。如果你對該代碼有任何意見可以留言,但請勿進行人身攻擊,我是一個菜鳥只能寫出這樣的東西,每个老鸟都有这样的过程。

鉴于时间问题,代碼的提交部分使用的是传统的表单POST,如果您喜欢可以根据LOAD过程自行加上相应的SCRIPT,不过好像只
能用GET了。聽說XML可以實現真正的無刷新,如果誰手上有希望能借來看看。

在此感謝QQ群組中蓝劍雪狐和shelly水在JS上給予的幫助,也新手們能把自己寫的功能代碼貼出來大家一起來學習研究。

最後附上演示地址:http://lfox0002.dns0755.net/text_input.php 請喜歡HACK他人機器的朋友們手下留情,附上演示是為了讓朋友們能更快了解代碼。

input.php[HTML] 接受用户输入数据。

PHP代码:----------------------------------------------

<?php
/*
                         申        明
                 ------------------------------
  该演示文件详细描述了利用JS+PHP对数据库进行類似無刷新读出写入的方法

2004年02月14日
                                                 By L.Fox
                                                             */

header("Cache-Control: no-store, no-cache,must-revalidate");   //這兩行可以取消,把文件存成HTML
echo $_POST["name1"];                                          //我是為了?#123;試方便才加的。
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=??????">
<title>根据编号从MYSQL提取数据进行编辑并回存[演示]</title>
<script language="JavaScript" id="LoadDataSrc"></script>
<style>
body {
    font-family: "Verdana", "Arial", "Helvetica", "sans-serif";
    font-size: 12px;
    line-height: 17px;
    scrollbar-base-color: #BBBBBB;
    scrollbar-shadow-color: #BBBBBB;
    scrollbar-highlight-color: #FFFFFF;
    scrollbar-3dlight-color: #000000;
    scrollbar-darkshadow-color: #000000;
    scrollbar-arrow-color: #FFFFFF;
}
table {
    border: 0;
    font-size: 12px;
    cursor: default;
}
td {
    text-align: left;
    height: 20;
}
input {
    width: 100;
    height: 18;
    border: 0px solid #666666;
    text-align: left;
}
</style>
<script>
var objInput = null;
var objTd = null;
var num =null;
function AutoEdit(obj,id)
{
    if (objInput == null)
    {
        objTd = obj;
        obj.innerHTML = "<input size=\"10\" maxlength=\"10\" type=\"text\" value=\"" + obj.innerText + "\"
id=\"objInput\" onblur=\"objTd.innerText=this.value;LoadData(objTd.innerText,num);objInput=null;\" style=\"overflow:
visible;border:none;background-color:#EFEFEF\">";
        objInput = document.getElementById("objInput");
        objInput.focus();
    }
}

function LoadData(LoadIndex,LoadObj)
{
  var LoadFileName="load.php?action=" + LoadIndex + "&num=" + LoadObj;
  document.getElementById("LoadDataSrc").src = LoadFileName;
}
function OutPutData(obj)
{
    if (form1.num1.value.length<1){ alert("请输入数量1"); return false;}
    if (form1.num2.value.length<1){ alert("请输入数量2"); return false;}
    if (document.getElementById("name1").innerHTML.length<1){ alert("name1空值"); return false;}
    if (document.getElementById("name2").innerHTML.length<1){ alert("name2空值"); return false;}
    obj.innerHTML="<input type=\"hidden\" name=\"name1\" value=\"" + document.getElementById("name1").innerHTML + "\">";
    obj.innerHTML+="<input type=\"hidden\" name=\"name2\" value=\"" + document.getElementById("name2").innerHTML + "\">";
    obj.innerHTML+="<input type=\"hidden\" name=\"type1\" value=\"" + document.getElementById("type1").innerHTML + "\">";
    obj.innerHTML+="<input type=\"hidden\" name=\"type2\" value=\"" + document.getElementById("type2").innerHTML + "\">";
    obj.innerHTML+="<input type=\"hidden\" name=\"date1\" value=\"" + document.getElementById("date1").innerHTML + "\">";
    obj.innerHTML+="<input type=\"hidden\" name=\"date2\" value=\"" + document.getElementById("date2").innerHTML + "\">";
    obj.innerHTML+=form1.submit();
}
function postdata()
{
  form1.submit();   
}
</script>
</head>
<body>
<form name="form1" method="post" action="load.php?action=OutPutData">
<table width="400" cellpadding="0" cellspacing="1" align="center" bgcolor="#999999">
 <tr bgcolor="#EFEFEF">
  <td onclick="AutoEdit(this,num=1)" style="width: 200px;overflow:visible;word-break:break-all;"><div></div></td>
  <td onclick="AutoEdit(this,num=2)" style="width: 200px;overflow:visible;word-break:break-all;"><div></div></td>
 </tr>
 <tr bgcolor="#EFEFEF">
  <td><div id="name1" style="width: 200px;overflow:visible;word-break:break-all;">a</div></td>
  <td><div id="name2" style="width: 200px;overflow:visible;word-break:break-all;">b</div></td>
 </tr>
 <tr bgcolor="#EFEFEF">
  <td><div id="type1" style="width: 200px;overflow:visible;word-break:break-all;">a</div></td>
  <td><div id="type2" style="width: 200px;overflow:visible;word-break:break-all;">b</div></td>
 </tr>
 <tr bgcolor="#EFEFEF">
  <td><div id="date1" style="width: 200px;overflow:visible;word-break:break-all;"></div></td>
  <td><div id="date2" style="width: 200px;overflow:visible;word-break:break-all;"></div></td>
 </tr>
 <tr bgcolor="#EFEFEF">
  <td><div><input type="text" name="num1" value=""></div></td>
  <td><div><input type="text" name="num2" value=""></div></td>
 </tr>
 <div id="OutPutData"><a href="#" onclick="java script:OutPutData(this);">输出</a></div></form>
</body>
</html>
------------------------------------------------------

LOAD.php

PHP代码:-----------------------------------------------

<?php
header("Cache-Control: no-store, no-cache,must-revalidate");
include("obj/financial_obj_free.inc");          //这个文件里的内容是连接MYSQL的语句。
$str=$_GET["action"];
$num=$_GET["num"];
if ($str=="OutPutData") OutPutData();
else
  {
    linkdata("financial",1);
    $sql="select * from table where id='$str'";
    if ($query=mysql_query($sql))
       {
         $temdata=mysql_fetch_row($query);         //看看是不是空的,如果是就附上值以免JS报错。
         if (strlen($temdata[2])<1||$temdata[2]=="") $temdata[2]="空";
            $temdata[2]=htmlspecialchars($temdata[2]);
         if (strlen($temdata[3])<1||$temdata[3]=="") $temdata[3]="空";
            $temdata[3]=htmlspecialchars($temdata[3]);
         if (strlen($temdata[5])<1||$temdata[5]=="") $temdata[5]="空";
            $temdata[5]=htmlspecialchars($temdata[5]);
       }
    else
       {
         $temdata[2]=$temdata[3]=$temdata[5]="查询失败";
       }
    switch ($num)   //这个主要是用于检查是从第几列(行)传过来的。注意变量值要与input的id值对应好.否则出错
       {
         case 1:
           $diva="name1";
           $divb="type1";
           $divc="date1";
         break;
         case 2:
           $diva="name2";
           $divb="type2";
           $divc="date2";
         break;
         default:
           $diva="name1";
           $divb="type1";
           $divc="date1";
         break;
       }
        //确定节点,输出$temdata[X]到节点$divX;
    echo "document.getElementById('".$diva."').innerHTML='".$temdata[2]."';";
    echo "document.getElementById('".$divb."').innerHTML='".$temdata[3]."';";
    echo "document.getElementById('".$divc."').innerHTML='".$temdata[5]."';";
  }

function OutPutData() //这下面如果改成SQL语句就可以写进数据库
{
   echo "输出的数据如下,改成SQL语句然后就可以保存下来";
   echo "编号1=".$_POST["name1"]."<br>";
   echo "编号2=".$_POST["name2"]."<br>";
   echo "名称1=".$_POST["type1"]."<br>";
   echo "名称2=".$_POST["type2"]."<br>";
   echo "日期1=".$_POST["date1"]."<br>";
   echo "日期2=".$_POST["date2"]."<br>";
   echo "数量1=".$_POST["num1"]."<br>";
   echo "数量2=".$_POST["num2"]."<br>";  
   echo "<a href=\"text_input.php\">返回</a>";
}
?>

(0)

相关推荐

  • 工作中比较实用的JavaScript验证和数据处理的干货(经典)

    在开发web项目的时候,难免遇到各种对网页数据的处理,比如对用户在表单中输入的电话号码.邮箱.金额.身份证号.密码长度和复杂程度等等的验证,以及对后台返回数据的格式化比如金额,返回的值为null,还有对指定日期之前或之后某一天或某一月的计算. 遇到需要对数据及表单验证的,我相信大家都像我一样,喜欢在网上找相关的方法,因为自己写的话,是比较耗时的.今天就给大家分享一下,自己在工作中总结的一些常用 的js. 关键代码如下所示: /** * 验证密码复杂度(必须包含数字字母) * @param str

  • JS验证IP,子网掩码,网关和MAC的方法

    本文实例讲述了JS验证IP,子网掩码,网关和MAC的方法.分享给大家供大家参考.具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &

  • js验证上传图片的方法

    本文实例讲述了js验证上传图片的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <hea

  • json数据处理技巧(字段带空格、增加字段、排序等等)

    1.json数据的正常取值:json[i].fieldName 2.json数据的字段带空格:eval('json[' + i + ']["' + field + '"]') 3.json数据的赋值:eval('json[' + i + ']["' + field + '"]=' + jsonFilter.length); 4.json数据增加字段:循环所有数据,直接json[i].newField=defaultValue就可以了 5.json数据的排序:相当于数

  • js验证真实姓名与身份证号是否匹配

    最近的项目中用的需要调用实名认证的接口,实名认证接口价格相比短信而言高了不是几分钱,所以说调用实名认证的条件就要严格把关,因此用到js验证真实姓名与js验证身份证号. 进入正题 js验证真实姓名,是用的unicode字符的来进行匹配,而中国人的姓名长度一般都是2-4,所以重复匹配{2,4}次 1.js验证真实姓名 var regName =/^[\ue-\ufa]{,}$/; if(!regName.test(name)){ alert('真实姓名填写有误'); return false; }

  • js验证IP及子网掩码的合法性有效性示例

    复制代码 代码如下: function checkIP(ip) { obj=ip; var exp=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/; var reg = obj.match(exp); if(reg==null) { return false;//不合法

  • HTML页面登录时的JS验证方法

    开发一个注册的HTML页面, 用于搜集用户的注册信息.包括: 姓名(不能为空), 年龄(必须超过17岁), 体重(30-150kg), 班级(下拉列表),登陆密码(至少8位长).确认密码(和登录密码一致),Email(不能为空) , 电话,QQ, 个人简历等信息. 并针对这些表的元素来创建相应的验证,如果检测到错误, 在输入框后面用红色的字显示错误.要用到前面几节学习过的单行文本输入框text.下拉列表框select.密码输入框password.多行文本输入框textarea.这是一个较实用的用

  • 利用js调用后台php进行数据处理原码

    該方法已經屬於過時方法,其中關鍵的地方也從論壇上得來的,我只是把它消化吸收后重新写了更全面的出来.公布出來只是希望更多的新手能從中學到一些東西.如果你對該代碼有任何意見可以留言,但請勿進行人身攻擊,我是一個菜鳥只能寫出這樣的東西,每个老鸟都有这样的过程. 鉴于时间问题,代碼的提交部分使用的是传统的表单POST,如果您喜欢可以根据LOAD过程自行加上相应的SCRIPT,不过好像只能用GET了.聽說XML可以實現真正的無刷新,如果誰手上有希望能借來看看. 在此感謝QQ群組中蓝劍雪狐和shelly水在

  • 浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    1.什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写."Ajax"这个名词的发明人是Jesse James Garrett,而大力推广并且使Ajax技术炙手可热的是Google.Ajax的核心理念在于使用XMLHttpRequest对象发送异步请求. 2.为什么使用 Ajax减轻服务器的负担.Ajax的原则是"按需取数据",可以最大程序地减少冗余请求,减轻服务器的负担. 无需刷新页

  • js调用后台、后台调用前台等方法总结

    js调用后台,后台调用前台等方法总结 1. javaScript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入Button1_Click中; 复制代码 代码如下: protected void Button1_Click(object sender, EventArgs e) { this.TextBox1.Text = "voodooer"; } 2.在前台可以这样调用: 复制代码 代码如下: <input type="but

  • js调用后台servlet方法实例

    1.使用document.form.action方式 相关源码如下: *.js [javascript] 复制代码 代码如下: <span style="white-space:pre">  </span> document.getElementById("sendPerson").value = SendPerson;  document.getElementById("currentTime").value = cur

  • 多种方式实现JS调用后台方法进行数据交互

    项目开发过程中很多地方都需要前端和后台的数据交互,几种典型常用的方法如利用控件的AutopostBack属性.Button提交表单等等.但这些都是有条件的,AutoPostBack具有实时性但会刷新页面,Button提交表单不能实现数据交互的实时性.当然说到前台与后台的数据交互更不能漏掉ajax,ajax实现前台与后台数据的异步交互,并且保证实时的.局部刷新.但有些数据不需要异步交互,例如当交互的数据是下一步执行的条件时,就必须要等到数据前台与后台数据交互完成后才能继续执行程序.所以对于掌握js

  • jquery利用ajax调用后台方法实例

    复制代码 代码如下: 语法:$(function(){    var callback = function(r){  //r表示后台数据返回的数据.    }    $.get("",callback);   //引号里面写方法的路径}); 这样就可以得到后台方法得到的数据显示在html前端了. 以下是工作中写的一段js和后台方法: js: 复制代码 代码如下: $(function(){    var callback = function (r) {        var dat

  • 前台js调用后台方法示例

    1.后台方法 复制代码 代码如下: public string AA(string cc) { string dd = "大家好才是真的好"; string message=dd+cc; return message; } 前台JS 复制代码 代码如下: function Init() { var v = "中国"; var s = '<%=AA("' + v + '") %>'; alert(s); } 2.post提交 PVISA

  • TSYS 新闻列表JS调用下载

    有很多网友再问如何做一个JS新闻调用程序,现在贴出来供大家参考: JS调用程序: List2.asp 源码:-------------------------------------------------------------------------------- <!--#include file="Conn.asp" --> <% Dim RS,Sql Dim SpecId '资源特性Id SpecId=CLng(Request("SpecId&qu

  • asp.net下利用JS实现对后台CS代码的调用方法

    要求是这样的:在gridView中有些行是没有处理过的,用户用鼠标点击该行后即表示用户处理过这一行了,行的状态要和普通的一样了,但是GridView没有对行的事件处理,必须要用JavaScript对后台的事件进行调用,如果细心的话你会发现实际上在我们在页面上添加一个LinkButton并给它添加一个事件之后,实际上就是通过JavaScript进行的回传.       当我们添加一个LinkButton,生成页面并查看源代码,会发现比没有添加LinkButton之前多了些代码 <div> <

  • 前台JS(jquery ajax)调用后台方法实现无刷新级联菜单示例

    前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 CasMenu.aspx页面: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CasMenu.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr

随机推荐