将javascript变量传递给PHP

时间:2011-05-23 09:49:57

标签: php javascript jquery

我指的是这个问题: 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,但收到错误消息&amp; $ ms的值未按预期显示:

  

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

     

$ ms = $ _GET [“test”]; &lt; - 第17行   在a.php中

我在下面尝试了另一个更简单的代码(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,但得到了类似的错误消息&amp;没有显示$ ms的值:

  

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

请指教。感谢。

4 个答案:

答案 0 :(得分: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']值。您的网址为http://localhost/learn/b.php:显然该网址中没有GET值,因此出现错误。

当您的代码发送到浏览器时,浏览器会看到行$.get并执行AJAX请求。这是另一个 HTTP请求。它不会修改原始请求,因此不会减轻您上面收到的错误。通过此请求,您的浏览器会将http://localhost/learn/b.php?test=3000发送到服务器,并且不会出现错误。但是,因为您没有对响应做任何事情,所以您没有看到第二个请求的影响。

答案 1 :(得分:2)

也许使用此网址,您需要在网址

中精确确定GET参数“test”

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

看起来你应该把你的Javascript和PHP放在哪里令人困惑。您的PHP文件应该只具有接收和使用Javascript变量的逻辑,而不是任何Javascript本身。所以基本上你需要拆分这个逻辑。

在您的HTML文件中:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script>
$(function() {
    var ms = 3000;

    $.ajax({
        url: 'a.php',
        data: { test: ms },
        success: function(response) {
            $('#testing').html(response);
        }
    });
});
</script>

在PHP文件中(a.php);

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