delete_define.php包含以下代码段:
<?php
session_start();
?>
<form action="delete_now.php" target="upload_target" onsubmit="return my_func_1();">
<input type="submit" name="my_submit" class="my_submit" value="submit"/>
<iframe id="upload_target" name="upload_target" src1111="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
</form>
<script type="text/javascript">
function my_func_1(){
//alert("from within my_func() =" +<?php echo $_SESSION['my_session']; ?>);
alert(" my_func_1");
return true;
}
function my_func_2(){
alert("my_func_2 =" +<?php echo $_SESSION['my_session']; ?>);
return true;
}
</script>
delete_now.php有:
<?php
session_start();
$_SESSION['my_session']=rand();
?>
<script type="text/javascript">
alert("from within delete_now.php = " +<?php echo $_SESSION['my_session']; ?>);
window.top.window.my_func_2();
</script>
问题是my_func_2()没有像delete_now.php中的警告框那样为会话变量提供相同的输出。
为什么?
EDIT: CHANGED THE CODE SAID TO BE IN delete_define.php
答案 0 :(得分:0)
那是因为当delete_define.php加载时,Session var是1,那么它就变成了另一个,但是你在JS中存储了以前的值。
你应该将session var存储到JS var中,然后在delete_now.php中的JS中将它重置为新值。
How to refresh value from frame and other situations
添加到第一个php文件的JS类似于:
var session_var = '<?php echo $_SESSION['my_session']; ?>';
然后在你的delete_now.php的JS中:
parent.session_var = '<?php echo $_SESSION['my_session']; ?>';
更改函数my_func以警告session_var JS变量。
这么想......
说明:
然后结果页面js将是:
function my_func_2(){
alert("my_func_2 = 13513513513513");
return true;
}
因此,当你调用它时,无论$ _SESSION中是什么,都会有旧的静态值。
整体流程说明:
答案 1 :(得分:0)
您已经分配了随机数,因此根据您运行该页面的顺序会发出警报, 如果你从delete_now.php开始,两个连续的警报将是相同的。首先分配一些静态值,然后检查