【问题标题】:grabbing POST values with javascript使用 javascript 获取 POST 值
【发布时间】:2011-04-11 13:02:46
【问题描述】:

请原谅我提出了一个看似显而易见的问题,但我所有的搜索都是关于如何使用 JS 创建 POST 值的指南,而不是如何获取(和利用)它们。

我想做什么:

step1.php -- 从POSTing 到 step2.php

step2.php -- 也是一个表单,JS 抓取一个特定的 POST 值并对其进行一些处理,然后相应地更新这个新表单

出于不值得探讨的原因,该过程需要是一个 2 步//2 页过程。

显而易见的解决方案就是这样做:

<script type="text/javascript">

    function damn_ugly () {

        var shameful = <?php echo $_POST['desiredDatum']; ?>;
        do more stuff...
    }

</script>

但这对我来说似乎有点脏。

有没有更好的方法?或者这真的是我应该做的吗?

【问题讨论】:

  • 有什么特别的原因为什么你不能让第一个 step1.php 页面是动态的,并做一个 ajax 发布到 step2.php,返回一些 javascript 函数可以使用的数据?这会破坏您的“2step/2page 流程”,但如果您不喜欢上述格式,这似乎是一个更好的解决方案......
  • 说实话,将这两种形式的功能统一为一个完全超出了我目前的能力,而且我是相关网站上的唯一编码人员。我只是在为强大的 PHP 基础添加增量 javascript 增强方面迈出了犹豫的第一步,并且正在努力不咬太多东西。 :-)
  • 看看 jQuery 和他们的一些例子......你会发现它比你想象的要容易得多......一个调用它就会发送你的数据(它被打包到一个 JS 数组中)到您的 PHP 表单(您已经知道如何使用),然后它将返回到 JS 函数,无论您设置为从 php 表单输出什么数据。 docs.jquery.com/Main_Page

标签: php javascript html forms post


【解决方案1】:
var postData = <?php echo json_encode($_POST); ?>;

您显然可以通过将自定义数组传递给json_encode 来将其更改为仅包含$_POST 中的某些字段。

var desiredDatum = <?php echo json_encode($_POST['desiredDatum']); ?>;

没有更好的方法可以做到这一点 - 使用 json_encode 可确保无论 POST 变量中包含什么内容都不会中断(至少在赋值期间不会中断)。

【讨论】:

  • 抱歉,您的回答过于密集,您能否更新一下您的答案?
【解决方案2】:

这就是你应该怎么做,JavaScript 不能以另一种方式访问​​ POST 值。

当然你可以让它更漂亮一点:让你的 php 脚本将 POST 变量放入一个数组中,然后以 JSON 格式 打印该数组。现在你的 javascript 有了数组。

【讨论】:

    【解决方案3】:

    POST 值正在发送到服务器。一旦提交,只有服务器可以使用这些值。您的示例几乎是您必须“访问”在上一个请求中发送到服务器的 POST 值的唯一选项。

    【讨论】:

      【解决方案4】:

      JS 无法访问 POST 值,它只能检索 GET 值。但是,既然您使用的是 PHP 脚本并且可以将数据传递给 JS - 为什么不以 JSON 格式提供您的 JS 函数数据呢?您可以使用 PHP 的 json_encode 函数将所有 POST 值编码为 JSON,然后您可以在 JS 代码中轻松使用。

      【讨论】:

        【解决方案5】:

        试试这个 在第二步第 2 页:

        在页面上设置隐藏文本框:

        <input type='hidden' name='text1' id = 'text1' value='<?php echo $_POST['desiredDatum']; ?>' />
        

        现在如果你使用 jQuery 写下面给出的代码

        $(document).ready(function() {
        
        var shameful = $('#text1').val();
        
        });
        

        如果不使用 jQuery 则

        var shameful = document.getElementById('text1').value;
        

        我希望这就是你要找的。​​p>

        【讨论】:

          猜你喜欢
          • 2010-12-29
          • 2020-08-11
          • 1970-01-01
          • 2020-08-16
          • 2014-07-03
          • 1970-01-01
          • 2011-09-14
          • 2019-04-08
          相关资源
          最近更新 更多