我知道我可以这样做:
//Jquery
$.ajax({type: 'POST', data : {'action' : 'foo'}});
//PHP
if(isset($_POST['action']) && $_POST['action'] == 'foo')
{
function foo()
{
//yeah
}
}
但是..在我和朋友一起工作的项目中,他设置了控制器,以便能够使用自定义操作调用特定功能。例如,假设我的视图是使用thing.php的控制器。从我的Javascript我可以只是AJAX到这样的网址:
'url' : 'thing'
所以在这种情况下,foo()会被调用而不需要任何ifs或开关(据我所知)
对我而言,这是伟大而理想的,但我不确定它是如何设置的。他不在假期,所以我问你们。
你知道这是如何实现的吗?我们使用的是非常典型的MVC架构。对不起我是PHP新手。谢谢!
答案 0 :(得分:7)
看起来您的朋友正在使用.htaccess重写网址以添加.php
,可能还有
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
现在,如果您调用/thing
之类的网址,它实际上会在您的服务器上调用文件/thing.php
并执行它。或者在您的情况下,如果您的网址只是thing
而没有开始/它会调用您当前网页所在的同一文件夹中的thing.php
。
或许他正在重写控制器的所有内容,然后将变量添加为命令。像
这样的东西RewriteRule ^(.*)$ controller.php?action=$1
无论如何,检查你/他的.htaccess文件中的线索