⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flxajax_client.class.php

📁 flxAJAX是用PHP实现AJAX技术,这是用PHP5编写的,可调用javascript,模拟实现sajax
💻 PHP
字号:
<?php    
/**
 * flxajax_client
 * handles the javascript output to the client
 * @package flxAJAX PHP5
 * @author Clemens Krack <ckrack@gmail.com>
 * @copyright Copyright (c) 2005
 * @version 0.2.2
 * @access public
 **/
class flxajax_client {

    public $request_type;
    public $handler_uri;
    public $func_prefix;
    public $func_list;
    private $js_has_been_shown = 0;
     
    /**
     * flxajax_client::flxajax_client()
     * @return void
     **/
    public function flxajax_client(&$func_list, &$request_type, &$handler_uri, &$func_prefix)
    {
        $this->func_list = &$func_list;
        $this->request_type = &$request_type;
        $this->handler_uri = &$handler_uri;
        $this->func_prefix = &$func_prefix;
    }
    
    /**
     * flxajax_client::get_common_js()
     * returns the common javascripts
     * @return string
     **/
    private function get_common_js() 
    {
        $t = strtoupper($this->request_type);
        if ($t != "GET" && $t != "POST") {
            return "// Invalid type: $t.. \n\n";
        }
            
        // heredoc string for javascript output
        $html = <<<JSCODE
        // flexible ajax library
        // author: clemens krack - ckrack@gmail.com - http://tripdown.de
        var flxajax_request_type = "{$t}";
        
        function flxajax_init_object() {
        
        var A;
        try {
            A=new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
        try {
            A=new ActiveXObject("Microsoft.XMLHTTP");
        } catch (oc) {
            A=null;
        }
        }
        if(!A && typeof XMLHttpRequest != "undefined")
            A = new XMLHttpRequest();
            return A;
        }
        function flxajax_do_call(func_name, args) {
        var i, x, n;
        var uri;
        var post_data;
        
        uri = "{$this->handler_uri}";
        if (flxajax_request_type == "GET") {
            if (uri.indexOf("?") == -1) 
                uri = uri + "?rs=" + escape(func_name);
            else
                uri = uri + "&rs=" + escape(func_name);
                
            for (i = 0; i < args.length-1; i++) 
                uri = uri + "&rsargs[]=" + escape(args[i]);
            uri = uri + "&rsrnd=" + new Date().getTime();
            post_data = null;
        } else {
            post_data = "rs=" + escape(func_name);
            for (i = 0; i < args.length-1; i++) 
                post_data = post_data + "&rsargs[]=" + escape(args[i]);
        }
        
        x = flxajax_init_object();
        x.open(flxajax_request_type, uri, true);
        if (flxajax_request_type == "POST") {
            x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
            x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            x.setRequestHeader("Content-length",post_data.length); 
            x.setRequestHeader("Connection","close");
        }
        x.onreadystatechange = function() {
        if (x.readyState != 4) 
            return;
        
        var status;
        var data;
        status = x.responseText.charAt(0);
        data = x.responseText.substring(2);
        if (status == "-") 
            alert("Error: " + data);
        else  
            args[args.length-1](data);
        }
        x.send(post_data);
        delete x;
        }
JSCODE;
        return $html;
    }

    /**
     * flxajax_client::get_one_stub()
     * returns the javascript for each function wrapper
     * @return string
     **/
    private function get_one_stub($func_name) 
    {
        $html = <<<JSCRIPT
        
        // wrapper for {$func_name}
        function {$this->func_prefix}{$func_name}() {
            flxajax_do_call("{$func_name}", {$this->func_prefix}{$func_name}.arguments);
        }
JSCRIPT;
        return $html;
    }


    /**
     * flxajax_client::get_javascript()
     * returns all javascript code
     * @return string
     **/
    public function get_javascript()
    {
        $html = "";
        if (!$this->js_has_been_shown) {
            $html .= $this->get_common_js();
            $this->js_has_been_shown = 1;
        }
        foreach ($this->func_list as $func) {
            $html .= $this->get_one_stub($func);
        }
        return $html;
    }
}

?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -