Итак, проблема здесь в том, что я хочу иметь возможность создавать строку запроса и вкладывать разные параметры в один из параметров в Javascript. Я могу сделать это в php, используя функцию http_build_query. Я пытался сделать это в javascript, но параметры разделяются на &. Вот мой php-код
$query string = [
'action' => 'index',
'url' => '/test/app/sell.php?'. http_build_query([
'id' => $id,
'name' => $name,
'state' => $currentState,
'p' => 1,
])
));
который возвращает
url: "/test/app/sell.php?id=10&name=john&state=CA&p=1"
Вот мой URL-адрес js, но он разделяет параметры.
url = "url=/test/app/sell.php?"&id = " + id + "&name = " + name + "&state = " + form_name + "&p = " + 1"
который возвращает:
id: 2,
name: "john",
state: "CA",
p: 1,
url: "/test/app/sell.php?"
Как я могу добавить все параметры в параметр URL, и он должен вернуть что-то вроде этого url: "/test/app/sell.php?id=10&name=john&state=CA&p=1"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете сделать что-то вроде этого:
// Version 1 - preferable IMO
buildQuery = ({action, url}) => `${action}?${Object.entries(url)
.map(pair => pair.map(encodeURIComponent).join('='))
.join('&')}`;
let query = buildQuery({
action: "/test/app/sell.php",
url: {
id: 2,
name: "john",
state: "CA",
p: 1
}
});
console.info(`URL: ${query}`);Значения $_GET в PHP будут присвоены в виде массива ['id'=>1, 'name'=>'john', ...]. Полный URL-адрес не будет установлен в вашем $_GET superglobal. Чтобы проверить ваш полный URL-адрес, я считаю, что вам нужна комбинация приведенного ниже кода:
echo $_SERVER['REQUEST_URI'];
$actual_link = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
echo "$actual_link;
// Support for HTTP and HTTPS
$actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
echo "$actual_link;
Надеюсь это поможет,
Это создает URL-адрес, но когда я использую встроенную функцию ParseQueryString для извлечения URL-адреса, я не получаю полный URL-адрес. Он по-прежнему разбивает строку запроса на разные объекты. Таким образом, все, что находится после &, является объектом сравнения в строке запроса, когда я использую функцию ParseQueryString.
Мне понадобится дополнительная информация о вашей функции ParseQueryString. Где ты extracting URL? Пожалуйста, взгляните на обновления, которые я разместил
Я извлекаю URL-адрес в ответ, используя функцию ParseQueryString. Затем извлечение URL-адреса из ParseQueryString. поэтому я делаю что-то подобное в реакции let queryString = ParseQueryString(window.location.search);, затем анализирую объект url из queryString
Странно, что переменная, явно являющаяся строкой, возвращается как объект. Вы используете какой-то пакет?