Создайте строку запроса в javascript и объедините параметры в один параметр

Итак, проблема здесь в том, что я хочу иметь возможность создавать строку запроса и вкладывать разные параметры в один из параметров в 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"

Странно, что переменная, явно являющаяся строкой, возвращается как объект. Вы используете какой-то пакет?

Michael Smith 12.03.2019 02:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
1 098
1

Ответы 1

Вы можете сделать что-то вроде этого:

// 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.

ShadowWalker 12.03.2019 03:03

Мне понадобится дополнительная информация о вашей функции ParseQueryString. Где ты extracting URL? Пожалуйста, взгляните на обновления, которые я разместил

Miroslav Glamuzina 12.03.2019 04:39

Я извлекаю URL-адрес в ответ, используя функцию ParseQueryString. Затем извлечение URL-адреса из ParseQueryString. поэтому я делаю что-то подобное в реакции let queryString = ParseQueryString(window.location.search);, затем анализирую объект url из queryString

ShadowWalker 12.03.2019 05:17

Другие вопросы по теме