用ajax更改php变量

时间:2013-12-13 17:35:36

标签: php jquery ajax

我有一个像这样的php变量:

PHP代码:

$php_value = 'Am from PHP';  

我希望能够使用jQuery更改此变量,并且jQuery位于同一页面上?

5 个答案:

答案 0 :(得分:5)

你做不到。

当页面传送到浏览器并运行JavaScript时,生成页面的PHP程序将完成运行,变量将不再存在。

JavaScript允许您将新数据发送到服务器(Ajax),服务器可以将数据存储在(通常是数据库),并读取响应。

JavaScript还允许您在浏览器(DOM)中修改页面(包括Ajax请求响应中包含的数据)。

答案 1 :(得分:3)

PHP代码在服务器端运行,jQuery在客户端运行。从jQuery更新PHP变量的方法是让一个jQuery调用提交给PHP页面,并让PHP查找它:

$php_value = 'Am from PHP';  
if exists($_POST['php_value_from_jquery']) {
   $php_value = $_POST['php_value_from_jquery'];
}

答案 2 :(得分:2)

如果我正确理解您的问题,AJAX无法在同一页面上将数据发布到PHP代码。 我被告知它可以,但这不是微不足道的 - 仍然,我无法想象这是怎么可能的。无论如何,如果使用辅助PHP文件,AJAX很容易。

这是我的意思的一个例子。如果你试试这个:

<?php
    echo 'Hello';
?>

<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $.ajax({
                type: 'POST',
                url: '',
                success: function(data) {
                    alert(data);
                }
            });

        }); //END $(document).ready()

    </script>
</head>
<body>


</body>
</html>

弹出窗口将包含页面的HTML。


但是,如果您使用两个文件:

<强> file1.php

<?php
    echo 'Hello';
?>

<强> file2.php

<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $.ajax({
                type: 'POST',
                url: 'file1.php',
                success: function(data) {
                    alert(data);
                }
            });

        }); //END $(document).ready()

    </script>
</head>
<body></body>
</html>

弹出窗口只包含单词“Hello”。

要使用ajax,您必须调用外部PHP文件。


考虑到上述情况后,请注意Quentin的答案很重要 - 即使您使用AJAX在服务器上设置PHP变量,该变量在AJAX完成后消失 - 就像PHP变量在您的{{{{{ 1}}已完成呈现DOM并将其呈现给访问者的浏览器。

那么,该怎么办?两个选项。

(1)正如Quentin指出的那样,您可以将值永久存储在数据库中,或

(2)您可以使用PHP超全局,例如index.php变量。例如:

客户端:file2.php

$_SESSION

<强> file1.php

var storeme = "Hello there";
$.ajax({
    type: 'POST',
    url: 'file1.php',
    data: 'stored_on_server=' +storeme,
    success: function(data) {
        alert(data);
    }
});

您可以稍后检索该变量值:

<?php
    session_start();
    $SESSION['a_variable_name'] = $_POST['stored_on_server'];

<强> file3.php

$.ajax({
    type: 'POST',
    url: 'file3.php',
    success: function(data) {
        alert(data); //a popup will display Hello There
    }
});

答案 3 :(得分:0)

您无法使用javascript更改php值。即,在客户端脚本生效后,服务器脚本首先运行,因为它们已经无法修改,因为它们已经在浏览器中呈现了

答案 4 :(得分:-1)

如果jQuery要处理数据,那么你可以将PHP变量分配给jQuery变量,如下所示:

<script>
    var jquery_value = <?php echo $php_value; ?>
</script>

据我所知,因为jQuery是客户端而php是服务器端,所以不可能将jQuery变量分配给PHP。