【发布时间】:2014-01-01 13:57:53
【问题描述】:
我有一个这样的 php 变量:
PHP 代码:
$php_value = 'Am from PHP';
并且我希望能够使用 jQuery 更改此变量并且 jQuery 在同一页面上?
【问题讨论】:
-
您无法更改硬编码变量。您只能将
GET或POST变量传递给 PHP。
我有一个这样的 php 变量:
PHP 代码:
$php_value = 'Am from PHP';
并且我希望能够使用 jQuery 更改此变量并且 jQuery 在同一页面上?
【问题讨论】:
GET 或 POST 变量传递给 PHP。
你不能。
当页面被传送到浏览器并运行 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 很容易。
这是我的意思的一个例子。如果你试试这个:
<?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 文件。
在考虑了上述之后,请注意昆汀的回答很重要——即使你使用 AJAX 在服务器上设置 PHP 变量,该变量在 AJAX 完成后消失——就像 PHP 变量在你的 @987654324 之后消失一样@ 已完成渲染 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
<?php
session_start();
$SESSION['a_variable_name'] = $_POST['stored_on_server'];
您可以稍后检索该变量值:
$.ajax({
type: 'POST',
url: 'file3.php',
success: function(data) {
alert(data); //a popup will display Hello There
}
});
file3.php
<?php
session_start();
echo $SESSION['a_variable_name'];
【讨论】:
您无法使用 javascript 更改 php 值。即服务器脚本在客户端脚本生效后首先运行,在这种情况下您无法修改相同的脚本,因为它们已经在浏览器中呈现
【讨论】:
如果 jQuery 将要处理数据,那么您可以将 PHP 变量分配给 jQuery 变量,如下所示:
<script>
var jquery_value = <?php echo $php_value; ?>
</script>
据我所知,因为 jQuery 是客户端,而 php 是服务器端,所以无法将 jQuery 变量分配回 PHP。
【讨论】: