Поиск, где конкат имя после выбора в MySQL запрос

Я попробую более простой ответ:

Объяснение проблемы

Во-первых, давайте разобраться в потоке событий, когда страница обслуживается с нашего сервера:

  • Первый PHP запущен, он генерирует HTML, который подается клиенту.
  • Затем HTML доставляется клиенту, после того, как PHP завершен с ним, d хотели бы подчеркнуть, что как только код покидает сервер - PHP завершается с ним и больше не может его получить.
  • Затем HTML с JavaScript доходит до клиента, который может выполнять JS на этом html.

Итак, главное, что нужно запомнить здесь, это HTTP-апатрид. После того, как запрос покинул сервер, сервер не может его коснуться. Таким образом, это оставляет наши возможности:

  1. Отправлять больше запросов от клиента после , начальный запрос выполнен.
  2. Кодировать, что сервер имел в исходном запросе.

Решения

Вот главный вопрос, который вы должны задать себе:

Я пишу веб-сайт или приложение?

Веб-сайты в основном основаны на страницах, а время загрузки страницы должно быть как можно быстрее (например, Википедия).

Веб-сайт

Отправка большего количества запросов от клиента после веб-приложений больше, чем AJAX, и совершить много круговых поездок, чтобы быстро получить информацию о клиенте. первоначальный запрос выполняется медленно, так как требует больше HTTP-запросов, которые имеют значительные накладные расходы. Более того, для асинхронности требуется асинхронность , поскольку для запроса AJAX требуется обработчик, когда он будет завершен.

Я бы не не рекомендовал сделать другой запрос , если только ваш сайт является приложением для получения этой информации с сервера.

Вы хотите быстрое время отклика, которое имеет огромное влияние на время конверсии и загрузки. Выполнение ajax-запросов медленнее для первоначального времени безотказной работы в этом случае и ненужных.

У вас есть два способа решить проблему

  • Установить cookie - файлы cookie - это заголовки, отправленные по HTTP запросы, которые могут считываться как сервером, так и клиентом.
  • Кодировать переменную как JSON - JSON очень близок к объектам JavaScript, а most Объекты JSON являются действительными переменными JavaScript.

Настройка файла cookie действительно не очень сложна, вы просто назначаете ему значение:

setcookie("MyCookie", $value); // sets the cookie to the value, remember, do not
                               // set it with HTTP only to true.

Затем вы можете прочитать его с помощью JavaScript с помощью document.cookie:

Вот краткий рулонный парсер, но ответ, который я связал прямо над этим, имеет более проверенные:

var cookies = document.cookie.split(";").
    map(function(el){ return el.split("="); }).
    reduce(function(prev,cur){ prev[cur[0]] = cur[1];return prev },{});

cookies["MyCookie"] // value set with php.

Cookies хороши для небольших данных. Это то, что часто делают службы отслеживания.

Как только у нас будет больше данных, мы можем кодировать его с помощью JSON внутри JS-переменной:


Предполагая, что $value - json_encode на стороне PHP (это обычно есть). Этот метод - это то, что StackOverflow делает со своим чатом, например (только с использованием .net вместо php).

Приложение

Если вы пишете приложение - внезапно начальное время загрузки равно всегда важна, как текущая производительность приложения, и начинает платить за загрузку данных и кода отдельно.

В моем ответе здесь объясняется, как загружать данные с помощью AJAX в JavaScript:

function callback(data){
    // what do I do with the response?
}

var httpRequest = new XMLHttpRequest;
httpRequest.onreadystatechange = function(){
    if (httpRequest.readyState === 4) {// request is done
        if (httpRequest.status === 200) {// successfully
            callback(httpRequest.responseText);// we're calling our method
        }
    }
};
httpRequest.open('GET', "/echo/json");
httpRequest.send();

Или с jQuery:

$.get("/your/url").done(function(data){
    // what do I do with the data?
});

Теперь сервер просто должен содержать маршрут / файл /your/url, содержащий код, который захватывает данные и делает это что-то с этим, в вашем случае:

<$php
 ...
 $val = myService->getValue(); // makes an api and db call
 echo json_encode($val); // write it to the output
 $>

Таким образом, наш JS-файл запрашивает данные и показывает их, а не запрашивает код или макет. Это чище и начинает окупаться по мере того, как приложение становится выше. Это также лучшее разделение проблем, и это позволяет тестировать код на стороне клиента без какой-либо связанной с ним технологии на стороне сервера. Это еще один плюс.

Postscript: вы должны очень знать об атаке XSS векторы, когда вы вводите что-либо от PHP к JavaScript. очень трудно избежать значений правильно, и это чувствительно к контексту. Если вы не знаете, как обращаться с XSS или не знаете об этом, прочитайте эту статью OWASP , эту [ и этот вопрос .

0
задан Paul 24 March 2019 в 22:54
поделиться