Я новичок в клиентских и серверных сценариях, и мне было интересно, почему они не могут взаимодействовать?
Основное отличие Code Conquest заключается в том, что:
… называется клиентским языком, потому что он запускает сценарии на вашем компьютере после загрузки веб-страницы.
- Как создать мой онлайн-сервер для Unity3d?
- Как получить время выполнения запроса MySQL из PHP?
- Laravel 5.2 Проверка Ошибка, не появляющаяся в лезвии
- Сценарий Python не выполняется должным образом из Php
- php-файл с командами CURL, не работающими на сервере
- Автоматически загружать файл config.php для всех страниц перед чем-либо еще
А также
Сервер или серверный язык запускает свои скрипты перед загрузкой HTML, а не после.
Даже если скрипт на стороне сервера (например, PHP) уже выполнен, почему он не может быть изменен (с помощью JavaScript) после загрузки страницы?
Я хочу вызвать PHP из JS. Например, есть ли способ сделать это?
setInterval(<?php someFunction() ?>,10000);
Извините, если я что-то неправильно истолковываю, и, пожалуйста, укажите мне.
Ну, они могут взаимодействовать, но не так, как вы себе это представляете.
Подумайте о клиентской стороне JavaScript в качестве браузера, и подумайте о стороне сервера, а также о сервере.
Затем они свяжутся, отправив сообщения друг другу, наиболее распространенным методом обмена сообщениями будет JSON.
Чтобы суммировать это, клиентский код может связываться с сервером, отправляя сообщения через GET
или POST
запросы или используя AJAX.
Сервер может отвечать на эти сообщения, а также (это было добавлено в стандарте HTML 5) посылает события клиенту с помощью WebSockets.
Они не могут взаимодействовать (вроде – объяснено более подробно ниже), потому что они работают в двух разных местах. Сценарии на стороне сервера – например, PHP, будут выполняться на сервере и завершать работу до отправки данных на ПК пользователя.
Скрипты на стороне клиента (например, Javascript) START запускаются, когда пользователь заканчивает загрузку данных страницы.
Итак, короче говоря, PHP заканчивает выполнение перед тем, как JS даже начинает выполняться – следовательно, они не могут реально взаимодействовать.
Как вы их взаимодействуете с помощью некоторых обманов и звонков внутри JS для запроса дополнительных данных с сервера – так что в этот момент они все равно будут работать индивидуально, но вы можете заставить их поговорить с помощью дополнительных вызовов, сделанных на странице.
Используя этот подход, хотя они выполняются полностью независимо друг от друга, они могут обмениваться информацией через данные (например, объекты JSON) и создавать впечатление, что они работают вместе, хотя они делают это в совершенно разных местах.
Нетехническая аналогия
Чтобы использовать полностью нетехническую аналогию, которая, мы надеемся, сделает ее более ясной, скажем, что серверные скрипты являются армейской базой. Сценарии клиентской стороны – это подразделения, развернутые в другой стране. Они все там, чтобы выполнить конкретную задачу, но они работают совершенно независимо друг от друга. Теперь JSON подобен телефонному звонку между ними. Развернутые блоки могут позвонить на базу, запросить дальнейшие инструкции, а затем выполнить их, но, насколько это касается базы, они понятия не имеют, что происходит, пока развернутые подразделения снова не вернутся домой, чтобы они могли СОРТИРОВАТЬ работать вместе, но делать это индивидуально и не зная, что на самом деле делает другое.
Самый простой способ – использовать AJAX, это легкий способ динамического создания / поиска контента.
var ajax_call = function() { $.ajax({ url: 'script.php?argument=value' }); // gets the php code you need. }; var interval = 1000 * 60 * X; // X = amount of minutes it will take till it executes. setInterval(ajax_call, interval); // sets the ajax_call function in motion
Дайте мне знать, если это сработает.
Простой пример:
var request = new XMLHttpRequest(); request.open('GET', 'http://example.com/yourfile.php?func=someFunc', false); request.send(); setInterval(request.responseText, 10000);
Или назначьте var:
yourvar = request.responseText; setInterval(yourvar, 10000);
Затем в файле yourfile.php:
$func = $_GET['func']; //use $func to call func or do other stuff
Клиентская сторона работает в браузере компьютера. Серверная сторона запускается на сервере и генерирует код, который отправляется клиенту.
Ajax или jQuery могут извлекать и отправлять данные непосредственно с сервера.