使用Jquery在页面加载上测试php会话变量

时间:2012-08-22 15:50:06

标签: php javascript jquery ajax

我有一个会话变量,当用户提交一个选择了某个选项的表单时设置该会话变量。当页面刷新时,我需要测试这个会话变量,如果它存在,那么使一些表单只读。到目前为止这是我的代码,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";    
}     
?>

'field'是我的下拉列表的名称,有2个选项是和否。

MY JS获取变量:

<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代码,head标记中的javascript函数。

我在body onload标签中调用一个包装器函数,然后调用这两个函数,我认为第一个函数会获得会话变量,如果它存在于php文档中,那么第二个函数将测试它是否不是空的,如果不是那么它会使字段只读。

但是当我在下拉列表中选择“否”并提交表单时,页面刷新并且没有任何反应,这些字段不是只读的。

2 个答案:

答案 0 :(得分:2)

假设PHP正在生成页面,你已经有了“必须禁用”表单,就不需要进行ajax调用 - PHP可以在构建页面时输出JS变量,例如

<script type="text/javascsript">
var disableForm = <?php echo (($_SESSION['somevar'] == 'whatever' ? 'true' : 'false') ?>;
if (disableForm) {
   ...
}
</script>

答案 1 :(得分:2)

为什么你使用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中的任何元素,如果条件