代码之家  ›  专栏  ›  技术社区  ›  Marvin

UrlSearchParams.get()不适用于重写的URL

  •  0
  • Marvin  · 技术社区  · 7 年前

    在我的网站上,我重写了所有的网址。但是现在我已经开始使用AJAX来实现投票功能(这是一个Q&一个社区),有一些问题:

    new UrlSearchParams(window.location.search) 以恒定的速度。然后我打电话给 .get() 方法。但是,由于URL被重写,它无法识别查询。

    const myParam = urlParams.get('id');
    

    url为 www.example.com/Questions/7 重写自 www.example.com/pages/question.php?id=7

    我的.htaccess文件如下所示:

    RewriteEngine On    # Turn on the rewriting engine
    Options -MultiViews
    RewriteRule ^$ /pages/index.php [L]
    RewriteRule    ^users/([0-9]+)$    pages/profile.php?id=$1   [NC]    # Handle users
    RewriteRule    ^questions/([0-9]+)$    pages/question.php?id=$1   [NC]    # Handle questions
    RewriteRule    ^([A-Za-z_]+)$       pages/$1.php                    [NC]    # Handle pages
    RewriteRule    ^([A-Za-z_]+)$       pages/$1.html                    [NC]    # Handle pages
    

    如何克服url重写时UrlSearchParams无法识别查询字符串数据这一事实?

    0 回复  |  直到 7 年前
        1
  •  1
  •   Phil    7 年前

    你的重写规则所有内部重写这意味着客户端代码只能看到原始的网址,即 /Questions/7 .

    因为您的PHP运行服务器端和 可以 看到重写后的查询参数,可以直接将它们作为JS变量注入到客户端代码中使用。

    <head>

    <script>
    const ID_PARAM = <?= json_encode($_GET['id'] ?? null) ?>;
    </script>
    
    推荐文章