我正在使用带有提交按钮的javascript确认框,如图所示调用javascript函数。在函数中,我正在设置一个PHP Session变量(我不知道是否可以这样做)。即
<input type="submit" name="delete" value="Delete Album" onclick="**cdelete()**">
javscript函数是:
<script type="text/javascript">
function cdelete(){
var f=confirm("Are you sure you want to delete this Album?");
if(f==true)
{
<?php $_SESSION['temp']=25;?>
}
else if(f == false)
{
<?php $_SESSION['temp']=45;?>
}
}
</script>
但问题是会话变量总是取值45.ie f == false 时的值,即使我按下确定按钮,即使确认框返回f为真。 / p>
任何帮助??
答案 0 :(得分:0)
PHP是一种服务器端语言。您将不得不使用Asynchronous Javascript和Xml(也称为AJAX)来执行PHP代码。 jQuery有一个非常容易使用的AJAX请求函数。你应该检查一下。 http://api.jquery.com/jquery.ajax/
答案 1 :(得分:0)
PHP在之前解析,因此PHP甚至不会看到您尝试使用的Javascript逻辑。
如果您想从Javascript和PHP访问,您可以使用cookie,但是在浏览器中实时更改的任何内容都必须使用AJAX异步发送,以便在加载前在服务器端进行注册下一页。
答案 2 :(得分:0)
问题是PHP代码在服务器端运行,而JavaScript在客户端运行。换句话说,PHP在Web服务器上执行,然后生成的网页(不包含任何PHP)将传递给浏览器。
正在发生的事情是文档中的所有PHP都被解析并执行,然后生成的网页被发送到运行JavaScript的客户端的Web浏览器。因此,您的两行PHP正在服务器上执行(首先将$_SESSION['temp']
设置为25,然后设置为45),然后将页面(不包含任何PHP)传递给客户端。如果您在Web浏览器中查看页面源代码,您会注意到PHP代码不存在且条件的主体为空。
有几种方法可以做你感兴趣的事情; AJAX将是一个不错的选择。
答案 3 :(得分:0)
PHP是服务器端脚本。 Javasript是客户方。
您的PHP代码先于其他任何内容执行。
因此,从技术上看,这就是代码执行的方式:
<?php
$_SESSION['temp'] = 25;
$_SESSION['temp'] = 45;
?>
<script type="text/javascript">
function cdelete(){
var f=confirm("Are you sure you want to delete this Album?");
if(f==true) { }
else if(f == false) { }
}
</script>
您需要实现AJAX以基于JS设置会话。通过AJAX调用php脚本,它将设置会话变量。
答案 4 :(得分:0)
所有php变量都在服务器端设置。因此,为了设置php变量,您必须向服务器发出请求(可能正在使用ajax)。您可以在following way:
中访问php变量的值(已经设置过)<?php
$simple = 'simple string';
$complex = array('more', 'complex', 'object', array('foo', 'bar'));
?>
<script type="text/javascript">
var simple = '<?php echo $simple; ?>';
var complex = <?php echo json_encode($complex); ?>;
</script>