使用PHP的AJAX代理,是否可能?

时间:2012-08-03 09:13:31

标签: php javascript jquery ajax

参考我的另一个问题:Context-aware AJAX call in a modular site,是否可以方便地设置AJAX代理?

我希望使用动态URL发出AJAX请求,而不会使用服务器端PHP指令污染JavaScript代码,在模块化Apache / PHP / MySQL站点中计算ajax php文件的正确路径,粗略的CMS由我。 换句话说,该站点的插件和组件都有自己的文件夹结构,包含CSS,JS和PHP,并且我有动态检索其文件夹的功能。我希望如此:

$("#mydiv").load(siteRoot + "/ajax.php?plugin=datagrid&
action=myaction&... other params...");

将调用(使用PHP计算服务器端的URL):

{siteRoot}/components/datagrid/ajax/myaction.php?... other params ...

(显然可以对所有可能的注射,CSRF和其他黑客进行检查)。

2 个答案:

答案 0 :(得分:1)

/ajax/get.php文件应如下所示:

$plugin = $_GET['plugin'];
$action = $_GET['action'];
$get = array();
foreach ($_GET as $k=>$v) {
    if($k!='plugin' && $k!='action') {
        $get[] = "{$k}={$v}";
    }
}
$url = 'siteRoot/components/'.$plugin.'/ajax/'.$action.'.php?'.implode('&', $get);

header("Location: {$url}");

当然,您需要在上面的代码中添加一些安全检查

编辑:缺点是它不能用于发送POST请求

答案 1 :(得分:0)

相反,您也可以在首页请求中声明您的javascript变量,然后使用它 假设SITE_URL包含你的php计算网址

 var siteRoot = '<?php echo SITE_ROOT?>' // or some thing else 

因此,此行之后包含的任何.js脚本都将定义siteRoot var。