喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 帮助

RSS 订阅当前论坛  

喜悦证交所已经关闭

上一主题 下一主题
 38  1/4  1  2  3  4  > 
     
标题: ajax简析  
 
Double_ycn (Double_ycn)
金牌会员
Rank: 6Rank: 6
版主



UID 18281
精华 6
积分 1618
帖子 1498
金钱 1558 喜悦币
威望 60
人脉 0
阅读权限 70
注册 2003-2-8
状态 离线
[广告]: q m
ajax简析

最近看ajax开始流行起来。记得公司在去年的时候渐渐使用该技术。为了更方便的交互,我把他们封装成分function。下面共享给大家。

<?php
/**
  *功能:    不刷新页面调用url
  *参数:    url:    要调用的url
            backFunc:   状态改变后调用的函数
    *说明:
            // retrieve XML document (reusable generic function);
            // parameter is URL string (relative or complete) to
            // an .xml file whose Content-Type is a valid XML
            // type, such as text/xml; XML source must be from
            // same domain as HTML file

  */
var isIE;
/*记录调用的对象变量,在backFunc函数里要还要置为空*/
var requestObj;
/*接收url echo出来的值,backFuncs第一个参数接收*/
var backFuncs;

/**
  是否返回xml状态,数据
  要想正确得到xml数据,还需要在url页面里加入'Content-type: text/xml'
 */
var returnXml false;
//var method = 'GET';//GET/POST两种方式
function loadPage(url,backFunc,isXml,method){
    try{
        if( 
== url.length)
            return 
false;
        
backFuncs backFunc;
        
returnXml isXml;
        if(
null == method)
            
method 'GET';

        
// branch for native XMLHttpRequest object
        
if (window.XMLHttpRequest) {
            
requestObj = new XMLHttpRequest();
            
//requestObj.onreadystatechange = eval(backFunc);
            
requestObj.onreadystatechange inceptLoadPage;
            
requestObj.open(methodurltrue);
            
requestObj.setRequestHeader("text","text");
 
requestObj.send();
            
// branch for IE/Windows ActiveX version
        
} else if (window.ActiveXObject) {
            
isIE true;
            
requestObj = new ActiveXObject("Microsoft.XMLHTTP");
            if (
requestObj) {
                
//requestObj.onreadystatechange = eval(backFunc);
                
requestObj.onreadystatechange inceptLoadPage;
                
requestObj.open(methodurltrue);
                
requestObj.setRequestHeader("text","text");
                
requestObj.send();
            }
        }
        return 
true;
    }catch(
e){}
}
//end

/**
 *功能:    为loadPage提供的回掉函数
 *说明:
        建议使用xml格式的返回值
        readyState  Object status integer:
        0 = uninitialized
        1 = loading
        2 = loaded
        3 = interactive
        4 = complete

            requestObj.readyState   == 4            loaded(还在载入)
            requestObj.status   == 200          ok(载入完成)

            requestObj.responseText             ok后得到的返回文本(是从url页面echo出来的值
 */
function inceptLoadPage() {
    
// only if req shows "loaded"
    
try{
        if (
requestObj.readyState == 4) {
            
// only if "OK"
            
if (requestObj.status == 200) {
                if(
false == returnXml){//不返回xml
                    
if(null != requestObj.responseText)
                        
parm requestObj.responseText;
                    else
                        
parm '';
                }
                else{
                    
parm requestObj.responseXML;
                }
                
/*
                alert(requestObj.responseXML);
                */
                
backFuncs +="('"+parm+"')";
                
//alert(backFuncs);
                
eval(backFuncs);
                
requestObj=null;
            }
            else {
                
alert("请检查您载入的URL是否正确!");
            }
}
    }
    catch(
e){
        
//  alert(e.message)
    
};
}
//
?>
上面是ajax的js实现部分。。。




北京亿中邮信息技术有限公司长期招聘PHP程序员。有兴趣的朋友可以发简历到yangyu@zhanzuo.net。
2006-2-22 10:24 AM#1
查看资料  发短消息  QQ  顶部
 
liu1210
高级会员
Rank: 4
超级会员


UID 63736
精华 0
积分 968
帖子 957
金钱 968 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-3-25
来自 衡山->郑州->北京
状态 离线
[推荐阅读] 您的电脑主板给立顿奶茶给腐蚀了
大哥,看看这个问题
http://www.phpx.com/happy/top110731.wsdl




Lucene是个好东西
2006-2-22 10:26 AM#2
查看资料  Blog  发短消息  QQ  顶部
 
Double_ycn (Double_ycn)
金牌会员
Rank: 6Rank: 6
版主



UID 18281
精华 6
积分 1618
帖子 1498
金钱 1558 喜悦币
威望 60
人脉 0
阅读权限 70
注册 2003-2-8
状态 离线
[推荐阅读] 求一日历模块
如何调用

下面就介绍一下如何调用:

<?php
function getDomainUser(domain){
    var 
url;
    if(
domain.length 0){
        
url "getDomainUser.php?domain="+domain;//要调用的页面
        
loadPage(url,"showUser",true);//showUser是要回调的函数处理url返回的值的js func true代表是返回xml数据 false代表返回文本数据
    
}
    else{
        
getObj('display').value='';
    }
}
//end

function showUser(a){
    var 
userInfo,len,uid,mobile,selUidObj;
    
userInfo requestObj.responseXML;//如果是xml数据必须通过这样的方式得到返回值。如果是文本的就可以通过参数a得到了。
    
if(null == userInfo){
        
alert("没有得到用户信息");
    }
    
mobile "";
    
selUidObj getObj('selUid');
    
selUidObj.length 0;
    if(
userInfo.childNodes[0].nodeName == "UserInfo"){
        
uid userInfo.childNodes[0];
        
len uid.childNodes.length;
        for(
i=0;i<uid.childNodes.length;i++){
            if(
"Uid" == uid.childNodes[i].nodeName){
                
selUidObj.options[i] = new Option(uid.childNodes[i].childNodes[0].nodeValue,uid.childNodes[i].childNodes[0].n
odeValue
);
                if(
== (i%2))
                    
selUidObj.options[i].style.backgroundColor "#E7F0F9";
                else
                    
selUidObj.options[i].style.backgroundColor "#73A2D6";

            }
        }
//end
    
}
}
?>
以上是调用的例子。




北京亿中邮信息技术有限公司长期招聘PHP程序员。有兴趣的朋友可以发简历到yangyu@zhanzuo.net。
2006-2-22 10:30 AM#3
查看资料  发短消息  QQ  顶部
 
Double_ycn (Double_ycn)
金牌会员
Rank: 6Rank: 6
版主



UID 18281
精华 6
积分 1618
帖子 1498
金钱 1558 喜悦币
威望 60
人脉 0
阅读权限 70
注册 2003-2-8
状态 离线
[推荐阅读] [掌上灵通-广州] 招聘系统管理员
被调用php应该怎么写

被调用php ajax期望他返回2种信息1 文本信息 2 xml信息下面分别介绍2种情况php应该怎么写
1 文本

此种方式最简单在php里面直接echo 就可以。
例如2楼的那个直接echo 0 就可以了。

2 xml信息
如果是xml信息那么在php页面在echo之前要发送一个header告诉页面此此返回的是xml
header("Content-Type:   text/xml");
然后在echo sml string
-------------
这样在loadPage的第二个参数指定的func里就会得到php返回的text 或xml object




北京亿中邮信息技术有限公司长期招聘PHP程序员。有兴趣的朋友可以发简历到yangyu@zhanzuo.net。
2006-2-22 10:38 AM#4
查看资料  发短消息  QQ  顶部
 
Double_ycn (Double_ycn)
金牌会员
Rank: 6Rank: 6
版主



UID 18281
精华 6
积分 1618
帖子 1498
金钱 1558 喜悦币
威望 60
人脉 0
阅读权限 70
注册 2003-2-8
状态 离线
[推荐阅读] 上海众生|服务器租用|游戏服务器租用|浙江服务器租用
以上没写任何理论性的东东。如果各位想了解理论性的东东。指介绍了如何使用!有问题的可以在这里提出!



北京亿中邮信息技术有限公司长期招聘PHP程序员。有兴趣的朋友可以发简历到yangyu@zhanzuo.net。
2006-2-22 10:40 AM#5
查看资料  发短消息  QQ  顶部
 
liu1210
高级会员
Rank: 4
超级会员


UID 63736
精华 0
积分 968
帖子 957
金钱 968 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-3-25
来自 衡山->郑州->北京
状态 离线
[推荐阅读] php运行起来说找不到模块。求助高手。
Thx a lot



Lucene是个好东西
2006-2-22 01:15 PM#6
查看资料  Blog  发短消息  QQ  顶部
 
uuq
高级会员
Rank: 4
中级会员


UID 28149
精华 1
积分 821
帖子 859
金钱 811 喜悦币
威望 10
人脉 0
阅读权限 50
注册 2004-4-27
来自 广州
状态 离线
[推荐阅读] 这个session怎么用不起来?
楼主不错
2006-2-22 01:23 PM#7
查看资料  发短消息  顶部
 
liu1210
高级会员
Rank: 4
超级会员


UID 63736
精华 0
积分 968
帖子 957
金钱 968 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-3-25
来自 衡山->郑州->北京
状态 离线
[推荐阅读] Php论坛问题
test.php:

<script type="text/javascript">
function HTTPRequest()
{
        this.request         = null;
        this.response         = null;
        this.method                = 'GET';
        //this.open            = open;
        //this.send                = send;
        try {
                this.xmlhttp = new XMLHttpRequest();
        } catch (e) {
                var XMLHTTP_IDS = new Array(
                        'MSXML2.XMLHTTP.5.0',
                        'MSXML2.XMLHTTP.4.0',
                        'MSXML2.XMLHTTP.3.0',
                        'MSXML2.XMLHTTP',
                        'Microsoft.XMLHTTP' );
                var success = false;
                for (var i=0;i < XMLHTTP_IDS.length && !success; i++) {
                        try {
                                this.xmlhttp = new ActiveXObject(XMLHTTP_IDS);
                                success = true;
                                break;
                        } catch (e) {}
                }
                if (!success) {
                        throw new Error('Unable to create XMLHttpRequest.');
                }
        }
}

HTTPRequest.prototype.open = function (url)
{
        this.xmlhttp.open(this.method, url, false);
        this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=gbk');
}

HTTPRequest.prototype.send = function (queryString)
{
        this.request = queryString;
        this.xmlhttp.send(queryString);
        if(this.xmlhttp.readyState == 4 && this.xmlhttp.status == 200) {
                this.response = this.xmlhttp.responseText;
        }
}

function chk_user_id()
{
   
    var user_id = document.getElementById("user_id").value;
    var Request = new HTTPRequest();
    Request.open("check.php");
    Request.send("user_id=" + user_id);
    if(Request.response == 0)
        alert("用户名 " + user_id + " 可以使用");
    else
        alert("用户名 " + user_id + " 已经存在,请选择其他帐号");
}
</script>

<tr>
         <td width="50" bgcolor="#FFFFFF">用户名: </td>
                 <td width="130">
         <input id="user_id" name="user_id" type="text" size="15" maxlength="16"> <font color="#FF0000">*</font></td>
         <td bgcolor="#FFFFFF"><input type="button" name="chkuserid" id="chkuserid" value="检测帐号" style="width: 60" onclick="chk_user_id()">  <font color="#FF0000">限3至16个字符的小写英文字母数字,请勿使用「'」</font></td>
</tr>
[/COLOR]

check.php:


<?
echo 0;
?>
[/COLOR]
这样做了后没有这种效果啊,why?




Lucene是个好东西
2006-2-22 01:33 PM#8
查看资料  Blog  发短消息  QQ  顶部
 
只爱一个人 (只爱一个人)
论坛元老
Rank: 8Rank: 8
超级管理员



UID 29639
精华 0
积分 3782
帖子 1620
金钱 3782 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2004-6-26
状态 离线
[推荐阅读] 找个收费的国外空间!
晕的很,你把那个getobj和返回的那个XML都给出来吧

不然看不懂,我对操作XML一点也不懂




customavatars/296392.jpg
2006-2-22 01:41 PM#9
查看资料  访问主页  Blog  发短消息  顶部
 
风卷残云
中级会员
Rank: 3Rank: 3
老会员



UID 63269
精华 0
积分 367
帖子 381
金钱 367 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-2-19
来自 江苏
状态 离线
[推荐阅读] phpmyadmin里面怎样让每个用户只可以看到他自己的数据库
楼主的代码对不完善,post方式没有写进去吧
2006-2-22 02:52 PM#10
查看资料  访问主页  发短消息  QQ  顶部
 38  1/4  1  2  3  4  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.036331 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP