如何在JavaScript和PHP之间传递数据?

4
我该如何将JavaScript代码中的数据传递到PHP中,然后再传回来呢?目前,我是通过以下方式实现的:
从PHP传递到JavaScript: 我会直接使用内联echo来发送数据:
<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表单,并用PHP回显目标变量。 - Galen
这只是一个例子。它背后的想法是,也许我已经创建了这个复杂的JavaScript函数,可以神奇地生成数据,然后我需要将这些数据发送到PHP脚本中,以保存到数据库中...或者类似的操作。 - chustar
6个回答

5
如果您希望通过表单提交此数据,您不需要使用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);
});

你如何使用JavaScript提交表单?类似这样吗: document.forms.form_name.submit(); ? - chustar
@chustar,你可以那样做,但请记住整个页面将会刷新,这可能没问题,但最好使用Ajax在后台进行调用。 - Jeff Beck

3

以下代码显示了一个使用jQuery Ajax在后台提交来自你的页面的表单的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>

这个答案的关键是使用JQUERY,不要试图手动完成。 - Alex Weinstein

3
首先,您需要了解PHP和JavaScript在不同的计算机上运行。
PHP运行在服务器上,而JavaScript运行在客户端计算机上。这使得事情变得有点非直接性。我的意思是,PHP和JavaScript不能直接更改变量,因为它们不同时运行。首先,PHP在服务器上运行,准备HTML和JS并将其提供给客户端,然后在客户端计算机上运行JavaScript,如果JavaScript需要从服务器获取某些内容,则再次调用服务器(无论是POST、GET还是AJAX都没有关系,它仍然是一个HTTP请求)。
因此,从PHP到JavaScript,您可以在准备JavaScript时传递变量,在此时只有PHP在运行,而JavaScript没有在运行,而从JavaScript到PHP,您可以通过向PHP服务器发送一些变量的客户端计算机发出请求来传递变量。

2
您可以使用GET或POST将数据从一个地方传递到另一个地方。

1

PHP和JavaScript最好的搭配就是开始使用PHP中的json_encode()和json_decode()函数。

这将把数据转换为JSON格式,即JavaScript对象表示法,使您能够在两种语言之间传递对象。一旦在JS中获取了对象,您可以执行eval操作。

实际上,数据的移动取决于您具体要做什么,但很多时候我使用Ajax,这是一个很好的起点。


0

如果你想要异步交互,可以使用XMLHTTPRequest来执行异步POST请求到服务器,以发送数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接