uri = $_SERVER['REQUEST_URI']; if(!is_null($calls)) $this->addCallables($calls); if(is_array($pars)){ foreach($pars as $parname=>$par){ if(!is_null($par)) $this->setPar($parname, $par); } } } function noCacheHeader () { header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header ("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache"); } function handler() { $args = array(); $mode = ''; if(!empty($_GET[$this->prefix."mn"])){ $mode = 'get'; $rqst = $_GET; $this->noCacheHeader(); } if(!empty($_POST[$this->prefix."mn"])){ $mode = 'post'; $rqst = $_POST; } if(empty($mode)){ return; } $methodName = $rqst[$this->prefix.'mn']; $args = $rqst[$this->prefix.'args']; if(in_array($methodName, $this->callables)){ $res = call_user_func_array($methodName, $args); }else{ $res = "ERROR: $methodName not callable"; } if(is_array($res)){ $r = array(); foreach($res as $k=>$v){ $r[] = "'$v'"; } $res = "[".join(', ', $r)."]"; } echo $res; exit; } function genJsCode(){ ob_start(); ?> var method = "method; ?>"; function createComObj() { var co; try{ co = new ActiveXObject("Msxml2.XMLHTTP"); }catch(err1){ try{ co = new ActiveXObject("Microsoft.XMLHTTP"); }catch(err2) { co = null; } } if(!co && typeof XMLHttpRequest != "undefined") co = new XMLHttpRequest(); if(!co){ alert("Could not create connection object."); } return co; } // callbackOrId - callback function reference for processing result or html tag id to store result function jsCom(methodName, args, callbackOrId) { var i, n; var comObj; var uri; var post_data = null; uri = "uri; ?>"; arstr = "prefix; ?>mn="+escape(methodName); for (i = 0; i < args.length; i++){ arstr += "&prefix; ?>args[]=" + escape(args[i]); } if(method == "GET"){ uri += ((uri.indexOf("?") == -1) ? "?" : "&" ) + arstr; uri += "&prefix; ?>x=" + new Date().getTime(); }else{ post_data = arstr; } comObj = createComObj(); comObj.callbackOrId = callbackOrId; comObj.open(method, uri, true); if (method == "POST") { comObj.setRequestHeader("Method", "POST " + uri + " HTTP/1.1"); comObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); } comObj.onreadystatechange = function() { if(comObj.readyState != 4) return; var data = comObj.responseText; if(typeof comObj.callbackOrId == "function"){ callbackOrId(data); }else if(typeof comObj.callbackOrId == "object"){ eval("res="+data); for(i=0; icallables = array_merge($this->callables, $a); else $this->callables[] = $a; } } function setPar($parName, $value = NULL) { switch($parName){ case"method": case"uri": $this->{$parName} = $value; break; } } } ?>