Я попробую более простой ответ:
Во-первых, давайте разобраться в потоке событий, когда страница обслуживается с нашего сервера:
Итак, главное, что нужно запомнить здесь, это HTTP-апатрид. После того, как запрос покинул сервер, сервер не может его коснуться. Таким образом, это оставляет наши возможности:
Вот главный вопрос, который вы должны задать себе:
Веб-сайты в основном основаны на страницах, а время загрузки страницы должно быть как можно быстрее (например, Википедия).
Отправка большего количества запросов от клиента после веб-приложений больше, чем AJAX, и совершить много круговых поездок, чтобы быстро получить информацию о клиенте. первоначальный запрос выполняется медленно, так как требует больше HTTP-запросов, которые имеют значительные накладные расходы. Более того, для асинхронности требуется асинхронность , поскольку для запроса AJAX требуется обработчик, когда он будет завершен. Я бы не не рекомендовал сделать другой запрос , если только ваш сайт является приложением для получения этой информации с сервера. Вы хотите быстрое время отклика, которое имеет огромное влияние на время конверсии и загрузки. Выполнение ajax-запросов медленнее для первоначального времени безотказной работы в этом случае и ненужных. У вас есть два способа решить проблему Настройка файла cookie действительно не очень сложна, вы просто назначаете ему значение: Затем вы можете прочитать его с помощью JavaScript с помощью Вот краткий рулонный парсер, но ответ, который я связал прямо над этим, имеет более проверенные: Cookies хороши для небольших данных. Это то, что часто делают службы отслеживания. Как только у нас будет больше данных, мы можем кодировать его с помощью JSON внутри JS-переменной: Предполагая, что Если вы пишете приложение - внезапно начальное время загрузки равно всегда важна, как текущая производительность приложения, и начинает платить за загрузку данных и кода отдельно. В моем ответе здесь объясняется, как загружать данные с помощью AJAX в JavaScript: Или с jQuery: Теперь сервер просто должен содержать маршрут / файл Таким образом, наш JS-файл запрашивает данные и показывает их, а не запрашивает код или макет. Это чище и начинает окупаться по мере того, как приложение становится выше. Это также лучшее разделение проблем, и это позволяет тестировать код на стороне клиента без какой-либо связанной с ним технологии на стороне сервера. Это еще один плюс. Postscript: вы должны очень знать об атаке XSS векторы, когда вы вводите что-либо от PHP к JavaScript. очень трудно избежать значений правильно, и это чувствительно к контексту. Если вы не знаете, как обращаться с XSS или не знаете об этом, прочитайте эту статью OWASP , эту [ и этот вопрос . setcookie("MyCookie", $value); // sets the cookie to the value, remember, do not
// set it with HTTP only to true.
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.
$value
- json_encode
на стороне PHP (это обычно есть). Этот метод - это то, что StackOverflow делает со своим чатом, например (только с использованием .net вместо php). Приложение
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();
$.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
$>