html php запрос без обновления URL - PullRequest
0 голосов
/ 09 апреля 2020

Можно ли отправить запрос без обновления URL?

В словаре я хочу выполнить первый простой запрос: www.example.com/?q=word

На странице результатов появится кнопка, с помощью которой я хочу искать больше результатов с другим запросом.

Этот второй запрос будет обычно выполняться с www.example.com/more.php?q=word.

Этот код будет выглядеть следующим образом:

<button onclick="window.location.href = 'more.php?q=<?php echo "$trimmed"; ?>';">search for more results</button>

Однако я хочу, чтобы URL оставался неизменным, чтобы следующий словарный запрос снова начинался с простого запроса. Другими словами, я хочу скрыть часть "more. php" от URL.

1 Ответ

1 голос
/ 09 апреля 2020

Предполагая, что ваш www.example.com?q=word указывает на индекс. php.
Предполагая также, что ваш more.php содержит функции. Предполагая в качестве третьего, что ваш index.php возвращает что-то отображаемое в браузере, даже если нет параметра GET, то есть начального вызова страницы. При этом действительно простым решением будет запускать каждый запрос по индексу. php. Там вы можете обрабатывать каждый запрос, даже разные типы, на основе нового GET-параметра type use use.

#index.php

require 'more.php';

// do something here to validate the parameters you use

switch($_GET('type')) {
    case 'simple':
        return simpleCall();
        break;
    case 'more':
        return additionalInfo();
        break;
}

function simpleCall() {
    // do stuff here
    // access $_GET for other paramters
}

#more.php

function complexCall() {
    //do complex stuff here
}

Наконец, ваш HTML будет выглядеть примерно так

<button onclick="window.location.href = '/?type="more"&q=<?php echo "$trimmed"; ?>';">search for more results</button>

Пока вы не получите больше, чем эти два типа, оно будет загромождено вашим switch заявлением.

По этой причине было бы неплохо подумать о различных решениях, таких как:

  • с такой системой маршрутизации https://medium.com/the-andela-way/how-to-build-a-basic-server-side-routing-system-in-php-e52e613cf241
  • с использованием асинхронных вызовов с вашего внешнего интерфейса с помощью JavaScript для вызова на другие PHP файлы на сервере, но остаются на той же странице в веб-интерфейсе. Это немедленно приведет к некоторому API. Но это, как правило, не самая лучшая идея.
  • Пожалуйста, проверьте ваши параметры независимо от того, POST или GET, прежде чем что-то делать с ними в остальной части кода. Пример словаря звучит очень похоже на запрос к базе данных, в которой, например, внедрение SQL очень важно, если данные, которые мы использовали, не проверено.

Надеюсь, это немного поможет .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...