Как мне перейти на передачу данных с кода JavaScript на PHP и обратно. Прямо сейчас, я делаю это круглый путь:
PHP для JavaScript: я бы просто использовал встроенное эхо для отправки данных:
<script type="text/javascript"> var data = <? echo $target_variable ?> </script>
ИЛИ
<script type="text/javascript"> var data = <?= $target_variable ?> </script>
JavaScript для PHP: я бы создал элемент формы в JavaScript, который бы подавил данные для меня в php-файл:
<script type="text/javascript"> var data = targetData; document.write(" <form method=\"post\"> <input type=\"hidden\" value=\""+target_value+\""></input> </form> "); </script> </script>
Есть ли лучшие способы сделать это? Лучшая практика.
Если вы хотите отправить эти данные через форму, вам не нужно создавать форму с помощью Javascript. Просто создайте невидимую форму с помощью HTML, заполните скрытое поле Javascript и автоматически отправляйте, когда будете готовы.
<form method="post" action="process.php"> <input type="hidden" name="data" id="data" /> </form> document.getElementById("data").value = "foo";
Если вы хотите отправить это в стиле ajax-стиля, я бы предложил реализовать jQuery, что делает это чрезвычайно простым. Обратите внимание на предыдущий случай, преобразованный в решение jQuery:
$.post("process.php", {data:"foo"}, function(results){ // the output of the response is now handled via a variable call 'results' alert(results); });
Следующий код показывает запрос ajax, который отправляет форму с вашей страницы в фоновом режиме с помощью jquery ajax. Надеюсь, это имеет смысл.
<html> <head><title>Sample</title></head> <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script> <script language="javascript"> function submitMe() { variableString = 'name='+$("#name").val()+'&location='+$("#location").val(); jQuery.ajax({ type: "POST", url: "http://google.com/some.php", data: variableString, success: function(msg){ alert( "Data Saved: " + msg ); } }); } </script> <body> <form id="xyzForm"> <input type="text" id="name" name="name"/> <input type="text" id="location" name="location"/> <input type="button" value="submit" onClick="submitMe();"/> </form> </body> </html>
Во-первых, вам нужно понять, что php и javascript работают на разных компьютерах.
Php работает на сервере, тогда как javascript запускается на клиентском компьютере. Это делает вещи немного недифференцированными. Я имею в виду, что php и javascript не могут напрямую изменять переменные, потому что они не запускаются одновременно. Первый php работает на сервере, подготавливает HTML и js и передает его клиенту, а затем на компьютере javascript работает на компьютере, если javascript нуждается в чем-то от сервера, он снова вызывает сервер (либо post, get, либо ajax не имеет значения, это еще http-запрос).
Таким образом, от php до javascript вы можете передать переменную при подготовке javascript, на которой pont запускает только php и javascript, а с javascript на php вы можете передать переменную, сделав запрос с компьютера клиента на ваш php-сервер с некоторыми переменные.
вы можете использовать GET или POST для передачи данных от одного к другому.
Самое лучшее, что вы можете сделать с парой PHP и JavaScript, – начать использовать функции json_encode () и json_decode () в PHP.
Это позволит получить данные в JSON, который является Обозначением объекта JavaScript, позволяющим передавать объекты между двумя языками. Вы можете сделать eval, как только получите его в JS, чтобы получить объект.
Фактически, перемещение данных должно зависеть от того, что вы делаете точно, но много раз я использую Ajax, и это было бы хорошим местом для начала.
Ну, если вы хотите асинхронного взаимодействия, вы можете использовать XMLHTTPRequest для выполнения запроса async POST на сервер, для отправки данных.