Как передавать данные с 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 проста, вы можете сгенерировать с ней 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.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); httpc.setRequestHeader("Content-Length", params.length); // POST request MUST have a Content-Length header (as per HTTP/1.1) 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 , что производит get_data.php , это будет отображаться в httpc.responseText. Обработка ошибок, регистрация событий и кроссбраузерная совместимость XMLHttpRequest оставлены как простые упражнения для читателя;)

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

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

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

 <!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); ?> 

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

Я думаю, вы более или менее просто описали Ajax .

(извините за краткий ответ)

Существует несколько способов, наиболее заметными из которых являются получение данных формы или получение строки запроса. Вот один метод с использованием JavaScript. Когда вы нажмете на ссылку, он вызовет _vals ('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 для достижения этого, что делает его намного проще.

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

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

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

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

 $val = $_POST['value']; 

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

Использование файлов cookie – это простой способ. Вы можете использовать jquery и pluging как 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 от Ashley для обновления значений в HTML без каких-либо проблем в течение длительного времени, пока не встретил JQuery (ajax, load и т. Д.),

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

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

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

Взгляните на эту тему: получение настроек файлов cookie в разных доменах с помощью javascript или другого

Там я написал, как использовать ajax для чтения файла cookie из php-файла …