AJAX可以从内部PHP函数而不是外部页面获取结果吗?


Can AJAX get results from an internal PHP function rather than an external page?

我刚刚开始使用OO PHP并创建了我的第一个类。现在,它可以工作了,但是我想整理一下。

现在类中的元素调用在文档头部声明的ajax函数。

我不希望类依赖于一个适当的头,所以为了保持它是自包含的,我将脚本函数移到了类文件中。我找不到关于这是否是一个禁忌的信息,所以如果是的话,我想知道"为什么把javascript/ajax放在PHP类的坏形式?"然而,如果这是一种可以接受的做法,我有一个更棘手的问题。

AJAX调用一个PHP页面,该页面的结果将填充页面上更多的类对象。但是,我认为这个类会更好,如果它不依赖于外部php文件。因此,我将文件移动到类文件上的函数中。这里有个棘手的地方。

如何让AJAX从位于AJAX调用而不是外部页面的同一文件上的函数获得结果?

这是我到目前为止的AJAX代码。var url目前是两个可能的PHP页面之一的路径,而不是期望的PHP内部函数。Var dest是类对象中结果结束的位置。
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
    ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
    ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function sndReq(url,dest) {
http.open('get',url);
http.onreadystatechange = function () {
    if (http.readyState == 4) {
        if (http.status == 200) {
            var responce = http.responseText;
            document.getElementById(dest).innerHTML = responce;
        }
    }
};
http.send(null);
}

您要求的内容听起来像xml-rpc或json-rcp。它允许您动态执行服务器端代码并获得结果。

示例javascript rpc库:http://barracudaserver.com/doc/WebServices/JRpcDoc.html

然而,我认为简单地传递参数是你想要的。最简单的方法是在url

中传递get参数。
http://www.site.com/ajax.php?cmd=find_user&user_id=12

然后在php中检查全局$_GET变量

中的这些参数
if(isset($_GET["cmd"]) && $_GET["cmd"] == "find_user"){
   $user_id = $_GET["user_id"];
   //some server-side stuff    
   echo results;
 }