我正在尝试从带有重写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
答案 0 :(得分:1)
如果您从example.com/Folder/foo.php
向example.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
});
所以,你必须在一个地方更改网址:)