用ajax更改php变量

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

PHP代码:

$php_value = 'Am from PHP'; 

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

你不能。

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

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

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

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']; } 

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

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

          

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


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

file1.php

  

file2.php

        

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

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


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

那么,该怎么办? 两种选择。

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

(2)您可以使用PHP超全局,例如$_SESSION变量。 例如:

客户端:file2.php

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

file1.php

  

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

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

file3.php

  

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

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

  

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