参考我的另一个问题: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和其他黑客进行检查)。
答案 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。