Как передать данные из Javascript в PHP и наоборот?

Как мне передать, что сценарий Javascript запрашивает страницу PHP и передает ей данные? Как мне затем заставить PHP-скрипт передавать данные обратно в Javascript-скрипт?

client.js:

data = {tohex: 4919, sum: [1, 3, 5]};
// how would this script pass data to server.php and access the response?

server.php:

$tohex = ... ; // How would this be set to data.tohex?
$sum = ...; // How would this be set to data.sum?
// How would this be sent to client.js?
array(base_convert($tohex, 16), array_sum($sum))
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
15
0
135 002
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Вы можете передавать данные из PHP в javascript, но единственный способ получить данные из javascript в PHP - через AJAX.

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

Что не так, как я только что показал, я использую метод отправки формы на работе для получения данных из JavaScript на серверную часть практически каждый день.

Kezzer 02.01.2009 12:59

С перезагрузкой страницы или асинхронным запросом?

Ólafur Waage 02.01.2009 14:32

Есть несколько способов, самые известные из которых - получение данных формы или строки запроса. Вот один из методов с использованием JavaScript. Когда вы нажимаете на ссылку, она вызывает _val ('mytarget', 'theval'), который отправляет данные формы. Когда ваша страница отправляется обратно, вы можете проверить, установлены ли эти данные формы, а затем извлечь их из значений формы.

<script language = "javascript" type = "text/javascript">
 function _vals(target, value){
   form1.all("target").value=target;
   form1.all("value").value=value;
   form1.submit();
 }
</script>

В качестве альтернативы вы можете получить его через строку запроса. В PHP есть глобальные функции _GET и _SET, которые значительно упрощают задачу.

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

Обновлено: Основываясь на том, что другие сказали, используя вышеуказанный метод, у вас будет тег привязки, например

<a onclick = "_vals('name', 'val')" href = "#">My Link</a>

А затем в вашем PHP вы можете получить данные формы, используя

$val = $_POST['value'];

Поэтому, когда вы нажимаете ссылку, которая использует JavaScript, она отправляет данные формы, и когда страница отправляется обратно с этого щелчка, вы можете затем получить их из PHP.

Ответ принят как подходящий

Передавать данные из PHP легко, с его помощью можно сгенерировать JavaScript. Другой способ немного сложнее - вам нужно вызвать скрипт PHP с помощью запроса Javascript.

Пример (с использованием традиционной модели регистрации событий для простоты):

<!-- headers etc. omitted -->
<script>
function callPHP(params) {
    var httpc = new XMLHttpRequest(); // simplified for clarity
    var url = "get_data.php";
    httpc.open("POST", url, true); // sending as POST

    httpc.onreadystatechange = function() { //Call a function when the state changes.
        if (httpc.readyState == 4 && httpc.status == 200) { // complete and no errors
            alert(httpc.responseText); // some processing here, or whatever you want to do with the response
        }
    };
    httpc.send(params);
}
</script>
<a href = "#" onclick = "callPHP('lorem=ipsum&foo=bar')">call PHP script</a>
<!-- rest of document omitted -->

Все, что производит get_data.php, будет отображаться в httpc.responseText. Обработка ошибок, регистрация событий и кроссбраузерная совместимость с XMLHttpRequest оставлены читателю в виде простых упражнений;)

См. Также Документация Mozilla для дальнейших примеров.

Стоит отметить, что он работает только с относительными URL-адресами из-за политики одинакового происхождения: en.wikipedia.org/wiki/Same-origin_policy

Leopoldo Sanczyk 15.10.2014 18:03

Не совсем верно, он работает с тем же доменом, поэтому абсолютные URL-адреса тоже работают. Он будет работать в междоменном режиме, если на целевой php-странице включен CORS. Также JSONP доступен, если CORS не является вариантом.

jcubic 11.11.2018 22:58

Это не работает. В настоящее время вы устанавливаете запрещенный заголовок (длина содержимого). Что работает сейчас?

traducerad 04.12.2019 10:04

@traducerad: Я уверен, что теперь это происходит автоматически, и нет необходимости настраивать его, хороший улов.

Piskvor left the building 04.12.2019 11:58

Я бы использовал JSON в качестве формата и Ajax (на самом деле XMLHttpRequest) в качестве механизма клиент-> сервер.

другой способ обмена данными с php на javascript или наоборот - использование файлов cookie, вы можете сохранять файлы cookie на php и читать их с помощью javascript, для этого вам не нужно использовать формы или ajax

Использование файлов cookie - простой способ. Вы можете использовать jquery и плагин как jquery.cookie или создать свой собственный. Пример использования Jquery + jquery.cookie

   <script>
   var php_value = '<?php echo $php_variable; ?>';

   var infobar_active = $.cookie('php_value');
   var infobar_alert  = any_process(infobar_active);

    //set a cookie to readit via php
   $.cookie('infobar_alerta', infobar_alerta );

   </script>

   <?php 

    var js_value = code to read a cookie

   ?>

Я нашел полезные серверные и гибридные фреймворки: http://www.phplivex.com/http://www.ashleyit.com/rs/

Я использовал сценарий RSJS Эшли для обновления значений в HTML без каких-либо проблем в течение долгого времени, пока не встретил JQuery (ajax, load и т. д.)

На днях я столкнулся с подобной проблемой. Скажем, я хочу передать данные со стороны клиента на сервер и записать данные в файл журнала. Вот мое решение:

Мой простой код на стороне клиента:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"   "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
   <meta http-equiv = "Content-Type" content = "text/html; charset=iso-8859-1" />
   <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type = "text/javascript"></script>
   <title>Test Page</title>
   <script>
    function passVal(){
        var data = {
            fn: "filename",
            str: "this_is_a_dummy_test_string"
        };

        $.post("test.php", data);
    }
    passVal();
   </script>

</head>
<body>
</body>
</html>

И код php на стороне сервера:

<?php 
   $fn  = $_POST['fn'];
   $str = $_POST['str'];
   $file = fopen("/opt/lampp/htdocs/passVal/".$fn.".record","w");
   echo fwrite($file,$str);
   fclose($file);
?>

Надеюсь, это сработает для вас и будущих читателей!

У меня следующие ошибки. Кто-нибудь знает решение? (index): 77 Uncaught ReferenceError: $ не определен в passVal ((index): 77) -for-> $ .post ("test.php", data); at (индекс): 79 -for-> passVal ();

oOEric 03.12.2017 07:32

Найдено решение: добавьте строку <script src = ajax.googleapis.com ...

oOEric 03.12.2017 07:35

И я обнаружил, что не может получать контент POST на стороне php. PHP и javascript должны быть в одном или разных файлах? (Я пробовал оба. Файл .record сформирован, но внутри него нет содержимого)

oOEric 03.12.2017 07:58

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