【问题标题】:Passing javascript variable to PHP将javascript变量传递给PHP
【发布时间】:2011-08-31 00:46:56
【问题描述】:

我指的是这个问题: Javascript value to PHP with Jquery

我尝试在名为 a.php 的文件中使用以下代码:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
 var ms = 9000;
function test()
{
    $.ajax({ url: "a.php",
         data: {"test":ms},
         type: 'get',
         success: function(output) {
                      $('#testing').html(output);
                  }
    });
}
test();
</script>
<?php
$ms = $_GET["test"];
echo "I am getting below value:";
echo $ms;
?>

然后我将浏览器指向http://localhost/learn/a.php,但收到错误消息& $ms 的值未按预期显示:

( ! ) 注意:未定义索引:test in C:\wamp\www\learn\a.php 第 17 行

$ms = $_GET["test"];

我在下面尝试了另一个更简单的代码(b.php):

<script src="js/jquery.min.js"></script>
<script type="text/javascript">
 var ms = 3000;
 $.get("http://localhost/learn/b.php", { "test": ms } );
</script>
<?php
$ms = $_GET["test"];
echo $ms;
?>

然后我将浏览器指向http://localhost/learn/b.php,但收到类似的错误消息并且没有显示 $ms 的值:

( ! ) 注意:未定义索引:test in C:\wamp\www\learn\b.php 在第 7 行 下面是第 7 行的代码 $ms = $_GET["test"];

请指教。谢谢。

【问题讨论】:

    标签: php javascript jquery


    【解决方案1】:

    至于上面的回答,a.php需要进行一次更正才能正常工作:

    <?php
    $ms = $_GET['test'];
    echo 'I am getting the value: ' . $ms;
    ?>
    

    【讨论】:

      【解决方案2】:

      您似乎对应该在哪里放置 Javascript 和 PHP 感到困惑。您的 PHP 文件应该只具有接收和使用 Javascript 变量的逻辑,而不是任何 Javascript 本身。所以本质上你需要拆分这个逻辑。

      在您的 HTML 文件中:

      $(函数(){ 无功毫秒 = 3000; $.ajax({ 网址:'a.php', 数据:{测试:毫秒}, 成功:功能(响应){ $('#testing').html(响应); } }); }); 脚本>

      在您的 PHP 文件 (a.php) 中;

      【讨论】:

      • 您能详细说明一下吗?如何命名html文件,或将html代码放入a.php?以及如何从浏览器调用?使用 http://../a.php 给出错误。如果 http://../a.php?test=100,它返回 100,而不是预期的 3000。
      【解决方案3】:

      当您使用 XHR 发出请求时,您不会简单地使用新请求访问页面并且值仍然存在(HTTP 是 无状态)。

      你需要用 jQuery 在回调中做一些事情。

      【讨论】:

      • 听起来不错!您能否提供额外的代码,以便 a.php 可以按预期工作。
      【解决方案4】:

      好的,看看这段代码:

      <script src="js/jquery.min.js"></script>
      <script type="text/javascript">
       var ms = 3000;
       $.get("http://localhost/learn/b.php", { "test": ms } );
      </script>
      <?php
      $ms = $_GET["test"];
      echo $ms;
      ?>
      

      我假设这一切都在一个文件中。您有两种不同语言的两段代码,它们在不同的地方解释。首先,您在顶部有 Javascript。这不是由您的服务器解释的。它像 HTML 一样返回给浏览器。

      稍后,您就有了一段 PHP。我们仍在服务器上,还没有向浏览器发送任何内容。您寻找 $_GET['test'] 值。您的 URL 是 http://localhost/learn/b.php:显然该 URL 中没有 GET 值,因此出现错误。

      当您的代码发送到浏览器时,浏览器会看到 $.get 行并执行 AJAX 请求。这是另一个 HTTP 请求。它不会修改原始请求,因此不会减轻您在上面收到的错误。有了这个请求,你的浏览器就会向服务器发送http://localhost/learn/b.php?test=3000,不会出错。但是,由于您没有对响应执行任何操作,因此您看不到第二个请求的效果。

      【讨论】:

      • 感谢您的出色解释。但是除了 GET、POST 之外,还有其他方法可以将 js 值传递给 PHP 吗?之所以这样问,是因为我正在尝试提取 API“example.com/jsapi”返回的一些数据。目前在网站上展示数据在html中使用
        ,在js中使用document.getElementById("panel")。我想将“面板”中的文本放入 PHP 变量中,然后插入 MySQL。对相关文档的任何建议或参考。
      • @Steve No. PHP 是服务器端,JS 是客户端。这两者通信的方式是HTTP,即GET/POST。
      • 您说“但是,因为您没有对响应做任何事情,所以您看不到第二个请求的效果。”您能否提供代码以查看第二个请求的效果?
      • 使用回调函数。在您继续之前,我会阅读有关 jQuery 和 AJAX 的优秀教程,而不是依赖复制和粘贴代码。看看jqfundamentals
      【解决方案5】:

      或许有了这个url,你需要在URL中精确的GET参数“test”

      http://localhost/learn/a.php?test=hello

      【讨论】:

      • 哇,超快,谢谢。这是否意味着必须使用 GET 或 POST 将 js 变量传递给 php 或任何其他方式?
      • 我猜是的,在你的情况下,我认为你错过了一个调用测试 javascript 函数的表单,然后它会自动调用已经设置了 GET 参数的 a.php 脚本
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 2019-07-07
      • 2014-01-11
      • 2011-06-12
      • 2016-02-23
      相关资源
      最近更新 更多