我正试图在一个具有重写URL的页面中进行ajax调用。
request = $.ajax({
url: "myajaxcode.php",
type: "post",
data: formData
});
生成的请求是.../Folder/Rewritten_Name/myajaxcode.php
为此,url应为.../Folder/myajaxcode.php
我还尝试在url中使用反斜杠:"/myajaxcode.php",它解析为/myajaxcode.php
当我提供绝对URL时,或者如果我使用一个计算URL并将其作为php文件名前缀的函数,ajax就会工作。然而,理想情况下,我希望避免使用绝对url或其他函数。
有没有更好的方法来处理ajax调用?
我的htaccess是
RewriteEngine on
RewriteBase /Folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^Rewritten_Name/([^/]+) Rewritten_Name.php?r=$1
如果您正在从example.com/Folder/foo.php
向example.com/Folder/myajaxcode.php
发出请求你可以使用相对URl,像这样:
request = $.ajax({
url: "./myajaxcode.php",
type: "post",
data: formData
});
假设定义的重写规则是正确的,那么就可以按照您希望的方式工作;在html中正确设置了基本url元标记。
另外一种方法,我一直被人们采用:在一些函数&调用<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
});
因此,您必须在一个位置更改url:)