我有一个会话变量,它是在用户提交选中某个选项的表单时设置的。当页面刷新时,我需要测试这个会话变量,如果它存在,则使一些表单只读。这是我迄今为止的代码,php:
<?php
require("header.php");
if(isset($_REQUEST['searching'])){ //check if form has been submitted
echo"<h2>Submitted</H2><p>";
connect('final');//connect to DB
$fName = $_POST['addFname'];
$lName = $_POST['addLname'];
$address = $_POST['address']
$dropdown = $_POST['field']; // yes or no option
$fName = htmlspecialchars($fName);
$fName = mysql_real_escape_string($fName);
$lName = htmlspecialchars($lName);
$lName = mysql_real_escape_string($lName);
$address = htmlspecialchars($line2); // stop HTML characters
$address = mysql_real_escape_string($line2); //stop SQL injection
if($dropdown== "no"){
$_SESSION['name'] = "$fName";
}
?>
"字段"是我的下拉列表的名称,有两个选项是和否。
MYJS获取变量:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type = "text/javascript">
var session;
function multi(){
$.ajaxSetup({cache: false})
$.get('getSession.php', {requested: 'foo'}, function (data) {
session = data;
});
}
</script>
我用它从会话中获取变量,getSession.php有以下内容:
<?php
session_start();
if (isset($_GET['name'])) {
// return requested value
print $_SESSION[$_GET['name']];
} else {
print json_encode($_SESSION);
}
?>
最后我有这个功能来禁用文本字段
<script language="JavaScript">
<!--
function enable_text2()
{
if (session !=""){
status = "true";
document.add.addFname.readonly=readonly;
document.add.addLname.readonly=readonly;
}
}
//-->
</script>
我的html的其余部分只是一个表单,这一切都在一个文档中,php代码在顶部,javascript函数在head标记中。
我在body onload标记中调用了一个包装器函数,然后它调用了这两个函数,我认为第一个函数会从php文档中获取会话变量(如果存在),然后第二个函数会测试它是否为空,如果不是,则会使字段只读。
但是,当我在下拉列表中选择"否"并提交表单时,页面会刷新,但不会发生任何事情,字段不会是只读的。
为什么要使用javascript??
session_start();
if (isset($_GET['name'])) {
$disable=true;
} else {
$disable=false;
}
<input type="text" name="addFname" <?php if($disable) { ?> readonly="readonly" <?php } ?>
这里我取了"addFname"。如果条件为
假设PHP正在生成这个"必须禁用"表单所在的页面,则不需要ajax调用-PHP可以在构建页面时输出JS变量,例如
<script type="text/javascsript">
var disableForm = <?php echo (($_SESSION['somevar'] == 'whatever' ? 'true' : 'false') ?>;
if (disableForm) {
...
}
</script>