【问题标题】:How to I send data from JavaScript to PHP and vice versa? [duplicate]如何将数据从 JavaScript 发送到 PHP,反之亦然? [复制]
【发布时间】:2010-12-30 09:51:57
【问题描述】:

如何将数据从 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 回显 traget_variable
  • 这只是一个例子。它背后的想法是,也许我已经创建了这个复杂的 JavaScript 函数,它神奇地生成数据,我需要将该数据发送到 PHP 脚本以保存到数据库中......或类似的东西。

标签: php javascript html protocols


【解决方案1】:

首先,你需要了解php和javascript运行在不同的计算机上。

Php 在服务器上运行,而 javascript 在客户端计算机上运行。这使得事情有点不直接。我的意思是,php 和 javascript 不能直接更改变量,因为它们不会同时运行。首先 php 在服务器上运行,准备 HTML 和 js 并将其提供给客户端,然后在客户端计算机上运行 javascript,如果 javascript 需要来自服务器的某些东西,它会再次调用服务器(无论是 post、get 还是 ajax 都无所谓,它是仍然是一个 http 请求)。

所以从 php 到 javascript,您可以在准备 javascript 时传递变量,此时仅 php 运行而 javascript 不运行,从 javascript 到 php,您可以通过从客户端计算机向您的 php 发出请求来传递变量带有一些变量的服务器。

【讨论】:

    【解决方案2】:

    以下代码显示了一个 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>
    

    【讨论】:

    • 这个答案的关键是USE JQUERY,不要尝试手动操作。
    【解决方案3】:

    使用 PHP 和 JavaScript 可以做的最好的事情是开始使用 PHP 中的 json_encode() 和 json_decode() 函数。

    这会将数据转换为 JSON,这是一种 JavaScript 对象表示法,允许您在两种语言之间传递对象。一旦你在 JS 中得到它,你就可以做一个 eval 来获取对象。

    实际上移动数据应该取决于你在做什么,但很多时候我使用 Ajax,这将是一个很好的起点。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          如果您希望通过表单提交此数据,则无需使用 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 您可以这样做,但请记住整个页面会刷新,这可能没问题,但使用 Ajax 在后台进行调用可能会更好。
          猜你喜欢
          • 2010-09-29
          • 1970-01-01
          • 1970-01-01
          • 2013-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多