使用ajax更改php变量

使用ajax更改php变量,php,jquery,ajax,Php,Jquery,Ajax,我有一个php变量,如下所示: <script> var jquery_value = <?php echo $php_value; ?> </script> PHP代码: $php_value = 'Am from PHP'; 我想用jQuery更改这个变量,而jQuery在同一页上?你不能 当页面交付到浏览器并运行JavaScript时,生成页面的PHP程序将完成运行,并且变量将不再存在 JavaScript将允许您向服务器(Ajax)发送

我有一个php变量,如下所示:

<script>
    var jquery_value = <?php echo $php_value; ?>
</script>
PHP代码:

$php_value = 'Am from PHP';  
我想用jQuery更改这个变量,而jQuery在同一页上?

你不能

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

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


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

您无法使用JavaScript更改php值。i、 e服务器脚本在客户端脚本生效后首先运行。在这种情况下,您无法修改相同的脚本,因为它们已在浏览器中呈现。如果jQuery将要处理数据,则可以将PHP变量分配给jQuery变量,如下所示:

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

var jquery_值=

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

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

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

如果我正确理解了您的问题,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>
file1.php

<?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: 'file1.php',
                success: function(data) {
                    alert(data);
                }
            });

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

    </script>
</head>
<body></body>
</html>
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'];
<?php
    session_start();
    echo $SESSION['a_variable_name'];
file3.php

<?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: 'file1.php',
                success: function(data) {
                    alert(data);
                }
            });

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

    </script>
</head>
<body></body>
</html>
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'];
<?php
    session_start();
    echo $SESSION['a_variable_name'];

您不能更改硬编码变量。只能将
GET
POST
变量传递给PHP。