Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用AJAX调用PHP函数?_Php_Ajax - Fatal编程技术网

用AJAX调用PHP函数?

用AJAX调用PHP函数?,php,ajax,Php,Ajax,我知道我能做到: //Jquery $.ajax({type: 'POST', data : {'action' : 'foo'}}); //PHP if(isset($_POST['action']) && $_POST['action'] == 'foo') { function foo() { //yeah } } 但是。。在我与一位朋友合作的一个项目中,他设置了控制器,以便能够使用自定义操作调用特定的函数。例如,假设我的视图使用

我知道我能做到:

//Jquery
$.ajax({type: 'POST', data : {'action' : 'foo'}});

//PHP
if(isset($_POST['action']) && $_POST['action'] == 'foo')
{
    function foo()
    {
        //yeah
    }
}
但是。。在我与一位朋友合作的一个项目中,他设置了控制器,以便能够使用自定义操作调用特定的函数。例如,假设我的视图使用thing.php的控制器。从我的Javascript中,我可以将AJAX转换为如下url:

'url' : 'thing'
所以在这种情况下,foo()将被调用,而不需要任何ifs或开关(据我所知)

对我来说,这是伟大和理想的,但我不知道它是如何建立的。他假期不在,所以我要问你们


你知道这是如何实现的吗?我们使用的是非常典型的MVC架构。对不起,我是PHP新手。谢谢

看起来您的朋友正在使用.htaccess重写URL以添加
.php
,可能是使用

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
现在,如果您调用像
/thing
这样的URL,它实际上会调用服务器上的文件
/thing.php
,并执行它。或者在您的情况下,如果您的url只是
thing
而没有启动,它将调用当前页面所在文件夹中的
thing.php

或者,他可能正在将所有内容重写到控制器,然后将变量添加为命令。差不多

RewriteRule ^(.*)$ controller.php?action=$1

无论如何,检查你的/his.htaccess文件以获取线索

你为什么不问问你的朋友他实现了什么以及是如何实现的?@eaterofcarbits:对不起?@DCoder:那么?“有人实现了一些东西。它是如何工作的?”---你能回答这个问题吗?@zerkms:不是用这么模糊的描述,不是。但我会解释为什么我不能回答它,而不仅仅是告诉他们做他们已经说过他们现在不能做的事情。我(恐怕没有其他人知道)你的朋友是如何做到这一点的。你可以读他/她的剧本。通常,类可以动态调用:
$class=new$classType()$类->$actionName()或加载了(最后一个稍微慢一点,但提供了更多可能用于高级预处理的信息。顺便说一句。htaccess文件默认情况下通常是隐藏文件,因此您不一定会看到它们,除非您有隐藏文件显示。btw2>我的托管公司使用iirf.ini文件而不是.htaccess,所以您也可以查看一下。