从重写的url调用Ajax


Ajax call from rewritten url

我正试图在一个具有重写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.phpexample.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:)