Как я могу отправлять данные с JavaScript на PHP и наоборот?
Как мне передать данные из кода 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>
Есть ли какие-нибудь лучшие способы сделать это? Что-то вроде лучших практик.
6 answers
Если вы хотите отправить эти данные через форму, вам не нужно создавать форму с помощью 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, позволяющим передавать объекты между двумя языками. Вы можете выполнить оценку, как только получите ее в JS, чтобы получить объект.
На самом деле перемещение данных должно зависеть от того, что именно вы делаете, но много раз я использую Ajax, и это было бы хорошим местом для начала глядя на.
Что ж, если вам нужно асинхронное взаимодействие, вы можете использовать XMLHttpRequest для выполнения асинхронного запроса POST на сервер для отправки данных.