我有一个像这样的php变量:
PHP代码:
$php_value = 'Am from PHP';
我希望能够使用jQuery更改此变量,并且jQuery位于同一页面上?
答案 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。