doujia4041 2013-07-07 12:15
浏览 84
已采纳

来自重写URL的Ajax调用

I'm trying to make an ajax call from within a page with a rewritten URL.

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

The resulting request is .../Folder/Rewritten_Name/myajaxcode.php

For this to work the url should be .../Folder/myajaxcode.php

I also tried using a backslash in the url: "/myajaxcode.php", this resolves to /myajaxcode.php

The ajax works when I provide the absolute URL or if I use a function that calculates and base URL and prefixes it the php file name. However, ideally I wanted to avoid using absolute urls or additional functions.

Is there a better way of handling the ajax call?

My htaccess is

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

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

1条回答 默认 最新

  • drpiqlzrh62917192 2013-07-07 12:38
    关注

    If you are making a request from example.com/Folder/foo.php to example.com/Folder/myajaxcode.php you can use relative URl, like this:

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

    Assuming that rewrite rules defined are correct, working exactly you want them to be & base url meta tag is set correctly in html.

    further another approch, I have been people taking is: setting a global js variable from PHP in some function & the call the function in <head> where ever they want to ajax. like this

    <?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;
     }
    

    add this in your template/layout

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

    you use can this like this:

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

    so, you will have to change the url at one place :)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值