也发一个AJAX应用类,各位大大帮助测试一下
时间:2007-11-06
来源:互联网
代码如下
复制PHP内容到剪贴板
<?
//header("Content-type: text/html;charset=utf-8");//输出编码,避免中文乱码
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]">
<head>
<meta http-equiv="Content-Type" c />
<title>无标题文档</title>
<script type="text/javascript">
function $(id) {
if (!id) {
return null;
}
var returnObj = document.getElementById(id);
if (!returnObj && document.all) {
returnObj = document.all[id];
}
return returnObj;
}
function Mes (mssage){ //输出信息
$("display").innerHTML=mssage;
}
//Name可以是表单名也可以是URL地址,
//dispose = “Mes”为回调函数名只能接收到返回的信息
//定义的函数例如:function Mes (mssage)
//technique可以是"GET" and "POST"表示传递方法
//technique也可以是input名传递单个input值
/*
POST方式传值:1.ayax(表单名,处理输出信息函数名应是字串型,POST发送方式可省略)//传送整个表单
2.ayax(表单名,处理输出信息函数名应是字串型,input名或ID) //传送单个输入框的值
GET方式传值:ajax(Url地址+变量[a.php?a=1&b=2],处理输出信息函数名应是字串型,"GET")
*/
/**
* **********************************************
* Name可以是表单名也可以是URL地址,
* dispose = “Mes”为回调函数名只能接收到返回的信息
* 定义的函数例如:function Mes (mssage)
* technique可以是"GET" and "POST"表示传递方法
* technique也可以是input名传递单个input值
* POST方式传值:1.ayax(表单名,处理输出信息函数名应是字串型,POST发送方式可省略)//传送整个表单
* 2.ayax(表单名,处理输出信息函数名应是字串型,input名或ID) //传送单个输入框的值
* GET方式传值:ajax(Url地址+变量[a.php?a=1&b=2],处理输出信息函数名应是字串型,"GET")
*/
function ajax(Name,dispose,technique){ // 发送表单
var stamp ="timeStamp=" + new Date().getTime(); // 当前时间
technique = technique? technique : "POST"; //传送变量方法
var urlVar = null; // POST方法存储的变量
var url = null; //处理信息页面地址
this.print = function (mssage){ //输出信息
eval(dispose+"('"+mssage+"')");
}
this.config = function () { // 处理基本信息函数
this.print("正在处理信息...");
if(technique.toUpperCase() == "GET" ){
url = Name;
stamp = "&"+stamp;
technique = "GET";
}else{
url = document.forms[Name].action;
stamp = "?"+stamp;
if(technique.toUpperCase()=="POST"){// 将页面中名为Name的表单各个元素(除去按钮以外的元素)转换为URL的形式
//欲返回的字符串
var returnString ="";
var arr = new Array();
var j = 0;
//取得表单元素组
var formElements = document.forms[Name].elements;
//组合url
//例如'/strutsaction.do&name=value'的形式
for(var i = formElements.length-1;i >= 0; --i ) {
//拼写参数
if(formElements[i].type != 'button' && formElements[i].type != 'submit' && formElements[i].value != "" )
{
arr[j++] = escape(formElements[i].name) + "=" + escape(formElements[i].value);
}
}
if(arr.length > 0) returnString = arr.join("&");
urlVar = returnString;
}else{
urlVar = $(technique).name+"="+$(technique).value;
}
technique = "POST";
}
}
this.http = function(){ // 浏览器检测
var req = null;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
req = new XMLHttpRequest();
if(req.overrideMimeType){//设置MIME类别
req.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){//IE浏览器
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e2){
try {
req=new ActiveXObject("Msxml2.XMLHTTP.4.0");
}catch (e3){
req=null;
}
}
}
}
if(!req && window.createRequest)req = window.createRequest();
return req;
}
this.call = function (){
var http_request = this.http();
if (!http_request) {
this.print("浏览器初始化异常。");
return null;
}else{
this.print("正在初始化浏览器...");
}
http_request.onreadystatechange = function(){//回调函数
if (http_request.readyState != 4){
this.print("正在读取数据...");
return;
}else{
if (http_request.status == 200){
if(http_request.responseText !="" && http_request.responseText != null ){
this.print(http_request.responseText);
}else{
this.print("");
}
return true;
}else if (http_request.status == 404) {
this.print("错误:无法找到请示页面"+url+"的地址。");
return false;
}else{
this.print("错误:服务器返回 (" + http_request.status + ")错误");
return false;
}
}
}
http_request.open(technique, url + stamp, true);
if(technique == "POST")http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //采用POST方法所必须进行的设置
http_request.send(urlVar);
}
this.config();
this.call();
}
</script>
</head>
<body>
<div id="display">显示数据</div>
<form name="form1" method="post" action="./a1.php">
<input name="come" type="text" id="come" value="admin">
<input name="come1" type="text" id="come1" value="admin">
<input name="bu1" type="button" value="AJAX" >
</form>
</body>
</html>
PHP代码:
<?
//header("Content-type: text/html;charset=utf-8");//输出编码,避免中文乱码
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url=http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="[url=http://www.w3.org/1999/xhtml]http://www.w3.org/1999/xhtml[/url]">
<head>
<meta http-equiv="Content-Type" c />
<title>无标题文档</title>
<script type="text/javascript">
function $(id) {
if (!id) {
return null;
}
var returnObj = document.getElementById(id);
if (!returnObj && document.all) {
returnObj = document.all[id];
}
return returnObj;
}
function Mes (mssage){ //输出信息
$("display").innerHTML=mssage;
}
//Name可以是表单名也可以是URL地址,
//dispose = “Mes”为回调函数名只能接收到返回的信息
//定义的函数例如:function Mes (mssage)
//technique可以是"GET" and "POST"表示传递方法
//technique也可以是input名传递单个input值
/*
POST方式传值:1.ayax(表单名,处理输出信息函数名应是字串型,POST发送方式可省略)//传送整个表单
2.ayax(表单名,处理输出信息函数名应是字串型,input名或ID) //传送单个输入框的值
GET方式传值:ajax(Url地址+变量[a.php?a=1&b=2],处理输出信息函数名应是字串型,"GET")
*/
/**
* **********************************************
* Name可以是表单名也可以是URL地址,
* dispose = “Mes”为回调函数名只能接收到返回的信息
* 定义的函数例如:function Mes (mssage)
* technique可以是"GET" and "POST"表示传递方法
* technique也可以是input名传递单个input值
* POST方式传值:1.ayax(表单名,处理输出信息函数名应是字串型,POST发送方式可省略)//传送整个表单
* 2.ayax(表单名,处理输出信息函数名应是字串型,input名或ID) //传送单个输入框的值
* GET方式传值:ajax(Url地址+变量[a.php?a=1&b=2],处理输出信息函数名应是字串型,"GET")
*/
function ajax(Name,dispose,technique){ // 发送表单
var stamp ="timeStamp=" + new Date().getTime(); // 当前时间
technique = technique? technique : "POST"; //传送变量方法
var urlVar = null; // POST方法存储的变量
var url = null; //处理信息页面地址
this.print = function (mssage){ //输出信息
eval(dispose+"('"+mssage+"')");
}
this.config = function () { // 处理基本信息函数
this.print("正在处理信息...");
if(technique.toUpperCase() == "GET" ){
url = Name;
stamp = "&"+stamp;
technique = "GET";
}else{
url = document.forms[Name].action;
stamp = "?"+stamp;
if(technique.toUpperCase()=="POST"){// 将页面中名为Name的表单各个元素(除去按钮以外的元素)转换为URL的形式
//欲返回的字符串
var returnString ="";
var arr = new Array();
var j = 0;
//取得表单元素组
var formElements = document.forms[Name].elements;
//组合url
//例如'/strutsaction.do&name=value'的形式
for(var i = formElements.length-1;i >= 0; --i ) {
//拼写参数
if(formElements[i].type != 'button' && formElements[i].type != 'submit' && formElements[i].value != "" )
{
arr[j++] = escape(formElements[i].name) + "=" + escape(formElements[i].value);
}
}
if(arr.length > 0) returnString = arr.join("&");
urlVar = returnString;
}else{
urlVar = $(technique).name+"="+$(technique).value;
}
technique = "POST";
}
}
this.http = function(){ // 浏览器检测
var req = null;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest){//Mozilla浏览器
req = new XMLHttpRequest();
if(req.overrideMimeType){//设置MIME类别
req.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){//IE浏览器
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e2){
try {
req=new ActiveXObject("Msxml2.XMLHTTP.4.0");
}catch (e3){
req=null;
}
}
}
}
if(!req && window.createRequest)req = window.createRequest();
return req;
}
this.call = function (){
var http_request = this.http();
if (!http_request) {
this.print("浏览器初始化异常。");
return null;
}else{
this.print("正在初始化浏览器...");
}
http_request.onreadystatechange = function(){//回调函数
if (http_request.readyState != 4){
this.print("正在读取数据...");
return;
}else{
if (http_request.status == 200){
if(http_request.responseText !="" && http_request.responseText != null ){
this.print(http_request.responseText);
}else{
this.print("");
}
return true;
}else if (http_request.status == 404) {
this.print("错误:无法找到请示页面"+url+"的地址。");
return false;
}else{
this.print("错误:服务器返回 (" + http_request.status + ")错误");
return false;
}
}
}
http_request.open(technique, url + stamp, true);
if(technique == "POST")http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //采用POST方法所必须进行的设置
http_request.send(urlVar);
}
this.config();
this.call();
}
</script>
</head>
<body>
<div id="display">显示数据</div>
<form name="form1" method="post" action="./a1.php">
<input name="come" type="text" id="come" value="admin">
<input name="come1" type="text" id="come1" value="admin">
<input name="bu1" type="button" value="AJAX" >
</form>
</body>
</html>
作者: yang_ysb 发布时间: 2007-11-05
另有一问题没有解决
不知道到为什么我有绝对路径可以发送
用相对路径不可以发送
请看这段
<form name="form1" method="post" action="./a1.php">
<input name="come" type="text" id="come" value="admin">
<input name="come1" type="text" id="come1" value="admin">
<input name="bu1" type="button" value="AJAX" onclick="ajax('form1','Mes','post');">
</form>
是发不出去的
不知道到为什么我有绝对路径可以发送
用相对路径不可以发送
请看这段
<form name="form1" method="post" action="./a1.php">
<input name="come" type="text" id="come" value="admin">
<input name="come1" type="text" id="come1" value="admin">
<input name="bu1" type="button" value="AJAX" onclick="ajax('form1','Mes','post');">
</form>
是发不出去的
作者: yang_ysb 发布时间: 2007-11-05
中文显示就乱码
作者: pets511 发布时间: 2007-12-06


escape 被这个重新编码了,你可以去掉,或者是在接受页面上加一个反escape编码的php也可以``
在这个论坛上面就有,你可以搜一下
作者: 17too 发布时间: 2007-12-08
还是文档问题,为啥不说明一下呢。

作者: luzhou 发布时间: 2007-12-09
复制PHP内容到剪贴板
{
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++)
{
if ($str[$i] == '%' && $str[$i+1] == 'u')
{
$val = hexdec(substr($str, $i+2, 4));
if ($val < 0x7f) $ret .= chr($val);
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
$i += 5;
}
else if ($str[$i] == '%')
{
$ret .= urldecode(substr($str, $i, 3));
$i += 2;
}
else $ret .= $str[$i];
}
return $ret;
}
这个是我在论坛里找到的一个,可以那个反解码 PHP代码:
function js_unescape($str){
$ret = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++)
{
if ($str[$i] == '%' && $str[$i+1] == 'u')
{
$val = hexdec(substr($str, $i+2, 4));
if ($val < 0x7f) $ret .= chr($val);
else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
$i += 5;
}
else if ($str[$i] == '%')
{
$ret .= urldecode(substr($str, $i, 3));
$i += 2;
}
else $ret .= $str[$i];
}
return $ret;
}
作者: 17too 发布时间: 2007-12-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28