Как я могу отправлять данные с 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>

Есть ли какие-нибудь лучшие способы сделать это? Что-то вроде лучших практик.

Author: chustar, 2009-12-28

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);
});
 5
Author: Sampson, 2009-12-28 07:00:58

Следующий код показывает запрос 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>
 3
Author: Priyank, 2009-12-28 07:31:31

Во-первых, вам нужно понять, что php и javascript работают на разных компьютерах.

Php работает на сервере, в то время как javascript работает на клиентском компьютере. Это делает вещи немного непрямыми. Я имею в виду, что php и javascript не могут напрямую изменять переменные, потому что они не запускаются одновременно. Сначала php запускается на сервере, подготавливает HTML и js и передает их клиенту, затем на клиентском компьютере запускается javascript, если javascript что-то нужно с сервера, он снова вызывает сервер (либо post, get, либо ajax не имеет значения, это все равно http-запрос).

Таким образом, из php в javascript вы можете передать переменную во время подготовки javascript, при котором pont работает только на php, а javascript - нет, а из javascript в php вы можете передать переменную, отправив запрос с клиентского компьютера на ваш сервер php с некоторыми переменными.

 3
Author: marvin, 2017-11-28 13:01:05

Вы можете использовать GET или POST для передачи данных от одного к другому.

 2
Author: nks14, 2009-12-28 07:04:17

Лучшее, что вы можете сделать с парой PHP и JavaScript, это начать использовать функции json_encode() и json_decode() в PHP.

Это приведет к тому, что данные будут переведены в JSON, который является обозначением объектов JavaScript, позволяющим передавать объекты между двумя языками. Вы можете выполнить оценку, как только получите ее в JS, чтобы получить объект.

На самом деле перемещение данных должно зависеть от того, что именно вы делаете, но много раз я использую Ajax, и это было бы хорошим местом для начала глядя на.

 1
Author: Jeff Beck, 2009-12-28 07:18:18

Что ж, если вам нужно асинхронное взаимодействие, вы можете использовать XMLHttpRequest для выполнения асинхронного запроса POST на сервер для отправки данных.

 0
Author: Mike, 2009-12-28 07:01:01