使用PHP的AJAX代理,可能吗?

使用PHP的AJAX代理,可能吗?,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,关于我的另一个问题:,可以用一种方便的方式设置AJAX代理吗 我希望使用动态url发出AJAX请求,而不会用服务器端PHP指令污染JavaScript代码,在模块化Apache/PHP/MySQL站点中计算AJAX PHP文件的正确路径,这是我编写的粗略CMS。 换句话说,该站点有插件和组件,它们有自己的文件夹结构,其中包含CSS、JS和PHP,我有函数动态检索它们的文件夹。我希望: $("#mydiv").load(siteRoot + "/ajax.php?plugin=datagrid&a

关于我的另一个问题:,可以用一种方便的方式设置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):


(显然,所有针对注入、CSRF和其他黑客的可能检查都已完成)。

/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请求,相反,您也可以在第一页请求中声明javascript变量,然后使用它 假设SITE_URL包含php计算的URL

 var siteRoot = '<?php echo SITE_ROOT?>' // or some thing else 
var siteRoot=''.//或其他东西

因此,对于这一行后面包含的任何.js脚本,都将定义siteRoot变量。

,正如我在另一个问题(我链接到的问题)中所述,我已经在使用这种方法,但我希望URL中有更多的灵活性。我问的是一个真正的AJAX代理脚本。所以头重定向也适用于AJAX调用?这似乎很有趣,适应包含帖子标题应该没有那么难……恐怕很难。AJAX请求本质上是标准的HTTP请求,所以这里没有什么神奇之处。我们在这段PHP代码中所做的是发送重定向头,它返回到浏览器,浏览器反过来要求给定的URL提供内容。但它不会第二次发送POST数据(这是正常的POST-REDIRECT-GET模式)。为了能够发送POST数据,您必须发送POST数据并读取PHP脚本中的响应(可能使用cURL)并输出响应。谷歌“php curl post”获取代码示例。是的,根据你的回答,我已经做了一些研究,curl似乎是一条出路。或者,可能会发出一个GET请求,其中POST变量被特别标记并转换为GET变量(但如果我没有弄错的话,GET有长度限制,因此不会有完全的兼容性)。谢谢你的解释:)
 var siteRoot = '<?php echo SITE_ROOT?>' // or some thing else