UrlSearchParams.get () не работает с переписанными URL - PullRequest
1 голос
/ 14 апреля 2019

На моем сайте я переписал все свои 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=$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

Как можно преодолеть тот факт, что UrlSearchParams не будет распознавать данные строки запроса при перезаписи URL?

1 Ответ

1 голос
/ 22 апреля 2019

Ваша перезапись регулирует все внутренние перезаписи, что означает, что код на стороне клиента может видеть только исходный URL, т.е. /Questions/7.

Поскольку ваш PHP работает на стороне сервера, а может Посмотрите переписанные параметры запроса, вы можете напрямую вставить их как переменные JS для вашего клиентского кода.

Например, поместите это в ваш <head> раздел ...

<script>
const ID_PARAM = <?= json_encode($_GET['id'] ?? null) ?>;
</script>
...