我的index.php有问题。我有一个将在compute.php上提交的表单,其中compute回显index.php中iframe内的会话变量的值。这是我的代码:
的index.php
<script type="text/javascript">
function reply_click(){
document.getElementById('iframe').src=('compute.php');
}
</script>
<? session_start(); ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"
onSubmit="reply_click(); return false">
<table cellspacing=0 cellpadding=10 width=320 border="0">
<tr><td>
<button type='submit' id='1' name='form_submit'>Compute</button>
</td></tr>
</table>
</form>
<?php
if(isset($_POST['form_submit']))
{
session_start();
$_SESSION['val']="8";
}
?>
<iframe id="iframe"></iframe>
compute.php
<?php
session_start();
$val=$_SESSION['val'];
echo($val);
?>
正如你在我的代码中看到的,每当提交表单时,会话变量被初始化为8.而iframe src将是compute.php,据说显示为8.但问题是iframe什么也没显示。我的onSubmit事件有问题吗?任何帮助将不胜感激。
答案 0 :(得分:1)
首先,您不需要session_start()
之后的第二个isset($_POST['form_submit'])
。
其次,您需要将第一个session_start()
一直移至顶部,然后再向浏览器输出,如javascript。
像:
<? session_start(); ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table cellspacing=0 cellpadding=10 width=320 border="0">
<tr><td>
<button type='submit' id='1' name='form_submit'>Compute</button>
</td></tr>
</table>
</form>
<?php
if(isset($_POST['form_submit'])) {
$_SESSION['val']="8";
}
?>
<iframe id="iframe"></iframe>
<?php
if(isset($_POST['form_submit'])) {
// drop out of php and echo the javascript
?>
<script type="text/javascript">
document.getElementById('iframe').src=('compute.php');
</script>
<?php
}
?>
答案 1 :(得分:0)
您在表单的onSubmit函数中的“return false”表示您的表单永远不会被提交,因此您的会话值永远不会被设置。
答案 2 :(得分:0)
你的问题是:
if(isset($_POST['form_submit']))
永远不会成真。当您点击该按钮时,您将iframe设置为正确的网址,但您说return false;
以阻止该网页重新加载。但这也可以防止任何发布请求。所以永远不会设置$ _POST。