2

我知道我可以这样做:

//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() 会被调用而不需要任何 if 或开关(据我所知)

对我来说,这是伟大而理想的,但我不确定它是如何设置的。他假期不在问,所以我问你们。

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

4

1 回答 1

7

看起来您的朋友正在使用 .htaccess 重写要添加的 URL .php,也许是

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

现在,如果你调用一个 URL,/thing它实际上会调用/thing.php你服务器上的文件并执行它。或者在您的情况下,如果您的网址只是thing没有开始 / 它会thing.php在您当前页面所在的同一文件夹中调用。

或者也许他正在将所有内容重写到控制器,然后将变量添加为命令。就像是

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

无论如何,请检查您/他的 .htaccess 文件以获取线索

于 2012-12-28T09:44:08.603 回答