来自重写URL的Ajax调用

时间:2013-07-07 12:15:44

标签: php ajax .htaccess

我正在尝试从带有重写URL的页面中进行ajax调用。

request = $.ajax({
                url: "myajaxcode.php",
                type: "post",
                data: formData
            });

结果请求为.../Folder/Rewritten_Name/myajaxcode.php

为此,网址应为.../Folder/myajaxcode.php

我也尝试在url中使用反斜杠:“/ myajaxcode.php”,这解析为     /myajaxcode.php

当我提供绝对URL或者如果我使用计算和基本URL的函数并且在其前面加上php文件名时,ajax工作。但是,理想情况下我想避免使用绝对网址或其他功能。

有没有更好的方法来处理ajax调用?

我的htaccess是

RewriteEngine on
RewriteBase /Folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^Rewritten_Name/([^/]+) Rewritten_Name.php?r=$1

1 个答案:

答案 0 :(得分:1)

如果您从example.com/Folder/foo.phpexample.com/Folder/myajaxcode.php提出请求  您可以使用相对URl,如下所示:

request = $.ajax({
                url: "./myajaxcode.php",
                type: "post",
                data: formData
            });

假设定义的重写规则是正确的,那么确切地说你需要它们是&基本网址元标记在html中正确设置。

另一个approch,我一直在采取的是:在某些功能和设置中从PHP设置全局js变量调用<head>中的函数,他们想要ajax。像这样

<?php
 function set_ajax_url($script_path){
   $ajax =  "<script type='text/javascript'>";
   $ajax .= "window.MY_AJAX_URL = ";
   $ajax .= $_SERVER['HTTP_HOST'] . $script_path;
   $ajax .= "</script>";
   echo $ajax;
 }

在模板/布局中添加

<html>
<head>
 <?php set_ajax_url('Folder/myajaxcode.php'); ?>
</head>

你可以这样使用:

request = $.ajax({
                url: MY_AJAX_URL,
                type: "post",
                data: formData
            });

所以,你必须在一个地方更改网址:)