UrlSearchParams.get() 不适用于重写的网址
UrlSearchParams.get() doesn't work with rewritten urls
在我的网站上,我重写了所有 url。但是现在我已经开始使用 AJAX 进行投票功能(它是一个问答社区),但存在一些问题:
我将 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= [NC] # Handle users
RewriteRule ^questions/([0-9]+)$ pages/question.php?id= [NC] # Handle questions
RewriteRule ^([A-Za-z_]+)$ pages/.php [NC] # Handle pages
RewriteRule ^([A-Za-z_]+)$ pages/.html [NC] # Handle pages
如何克服重写url时UrlSearchParams无法识别查询字符串数据这一事实?
您的重写规则所有内部重写,这意味着客户端代码只能看到原始 URL,即 /Questions/7
。
由于你的PHP在服务器端运行,可以看到重写的查询参数,你可以直接将它们作为JS变量注入,供你的客户端代码使用.
例如,将其放入您的 <head>
部分...
<script>
const ID_PARAM = <?= json_encode($_GET['id'] ?? null) ?>;
</script>
在我的网站上,我重写了所有 url。但是现在我已经开始使用 AJAX 进行投票功能(它是一个问答社区),但存在一些问题:
我将 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= [NC] # Handle users
RewriteRule ^questions/([0-9]+)$ pages/question.php?id= [NC] # Handle questions
RewriteRule ^([A-Za-z_]+)$ pages/.php [NC] # Handle pages
RewriteRule ^([A-Za-z_]+)$ pages/.html [NC] # Handle pages
如何克服重写url时UrlSearchParams无法识别查询字符串数据这一事实?
您的重写规则所有内部重写,这意味着客户端代码只能看到原始 URL,即 /Questions/7
。
由于你的PHP在服务器端运行,可以看到重写的查询参数,你可以直接将它们作为JS变量注入,供你的客户端代码使用.
例如,将其放入您的 <head>
部分...
<script>
const ID_PARAM = <?= json_encode($_GET['id'] ?? null) ?>;
</script>