0

我目前正在使用一些 jQuery 来获取 td 单元格中的内容。然后我通过一个变量将该内容传递给另一个文件。我正在尝试找出获取会话变量的最佳方法,并且似乎已经陷入困境。下面是一些简短的伪代码以及我的 JS/jQuery。

编辑/更新

更正下面的帖子。这是我的 ManageUsers.inc.php

<?php
// Load 404 page if file is accessed directly
if(!defined('INCLUDE_CHECK')) die(header("HTTP/1.0 404 Not Found"));

// Load 404 page if the page is accessed by Users or QA Agents
if($_SESSION['role_id']<2 or $_SESSION['role_id']==5) die(header("HTTP/1.0 404 Not Found"));

?>
<script src="/resources/js/getBusinessUnit.js"></script>
<script type="text/javascript" src="../../resources/js/User.js"></script>

<div id="main">
  <div class="container">
    <h1>Manage Users</h1>
    <h2>This page allows you to add and update the authorized Users</h2>
  </div>

  <div class="container">
    <div style="margin-left:auto; margin-right:auto; text-align:center;">
    <span id="user">
    <form name="insertUser" action="<?php echo htmlspecialchars($_SERVER['PHP']);?>" method="post">
      <div style="margin-top:0px; margin-left:auto; margin-right:auto; text-align:center;">
        <fieldset>
          <legend class="legend1"><h2>&nbsp User Info &nbsp</h2></legend>
          <div style="padding-top: 5px;">
            <input type="text" name="uname" class="textinput1" id="uname" value="" style="width:200px;" maxlength="200" tabindex="2" placeholder="User Name" /><br />
            <input type="text" name="fname" class="textinput1" id="fname" value="" style="width:200px;" maxlength="100" tabindex="3" placeholder="First Name" /><br />
            <input type="text" name="lname" class="textinput1" id="lname" value="" style="width:200px;" maxlength="100" tabindex="4" placeholder="Last Name" /><br />
            <div style="float:left"><input type="checkbox" name="status" id="status" value="YES"/>Enabled </div>
          </div>
        </fieldset>
        <fieldset>
          <legend class="legend1"><h2>&nbsp Company Info &nbsp</h2></legend>
          <div style="padding-top: 5px;">
            <div class="input-field">
              <?php require $adm_pg.'selectRole'.$ext; ?>
              </select>
            </div>
            <div class="input-field">
              <?php require $adm_pg.'selectBusinessUnit'.$ext; ?>
            </div>
              <span id="DeptContainer"></span>
          </div>
        </fieldset>
      </div>

      <?php require $adm_pg.'adminButtons'.$ext; ?>
    </form>
    </span>
    </div>
  </div>
  <div class="container">
    <?php require $adm_pg.'displayUsers.inc.php'; ?>
  </div>

</div>
<?php
require 'db/ManageUsers.db.php';
require 'db/logAction.db.php';
?>

这是我的 User.js 文件

$(window).on('load', function() {
    $('.user').on('click', function() {
        var id = $(this).html();
    $.get("/includes/adminPages/Update_User.inc.php?selection_id=" + id, function(data) {
        $('#user').html(data);
        });
    });
});
4

4 回答 4

2

那么这里有两个选择。

  1. PHP 文件可以将会话变量作为调用data中返回的一部分返回。$.get

  2. 如果会话值在页面执行期间没有改变,那么你可以简单地按照其他人的建议做,通过做echo $_SESSION['bus_id'];

如果你无法让#2 工作,这就是你要做的。将您的 HTML 文件缩减为此(我将省略标题内容,我认为这些内容在您的文件中是正确的):

<div>
<?php
    print_r($_SESSION);
?>
</div>

这将为您提供所有会话值。这样你就可以看到你想要的值是否在那里。如果是,那么这将正常工作:

<script>
var myvar = "<?php echo $_SESSION['bus_id']; ?>";
</script>

对于这样的问题,最重要的是简化它们。从页面中删除所有不需要的内容,并以小步骤添加到代码中,这样您就可以确定问题发生在哪里。看起来您遇到的问题实际上并不是您认为遇到的问题:)

编辑:

根据更新的信息,问题在于您希望在 PHP ( User.js) 从未解析过的文件中运行 PHP 代码。如果您需要访问在外部 .js 文件中定义的 javascript 函数中的 PHP 变量,则必须将该变量拉入主 PHP 文件中的 javascript 中,然后将其作为参数发送到您正在执行的任何代码在外部 .js 文件中,或全局声明它并确保它对外部代码可见。例如,使用参数解决方案:

索引.php

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="myfunctions.js"></script>
<script>
    $(document).ready(function(){
        var bus_id = "<?php echo $_SESSION['bus_id']; ?>";
        setup_binds(bus_id);
    });
</script>

myfunctions.js

function setup_binds(bus_id) {
    $(".user").on("click",function(){
        alert("bus_id is: " + bus_id);
    });
}

换句话说,您需要仔细考虑如何设计包含多个文件的页面。

于 2013-08-19T17:04:22.617 回答
0
<script type="text/javascript">
    var id = '<?php echo $_SESSION['bus_id'] ; ?>';
</script>
于 2013-08-19T16:40:52.480 回答
0

我很容易做到这一点。为了简化我的问题,我只是制作了一个隐藏的 div,其中包含会话变量。然后我设置 bus_id = (element.value) 其中 element 是隐藏 div id 的名称。

解决方案...

<input type = "hidden" id="bus" name="bus" value="<?php echo $_SESSION['bus_id']; ?>">

然后在我的 JS

bus_id = (bus.value);
于 2013-08-19T18:30:24.140 回答
0

从 PHP 到 JS,我喜欢做的就是使用 JSON 来处理几乎所有事情,然后在控制台中查看响应。

这显然不安全,我还没有测试过这段代码,但想法是这样的:

PHP

<?php
   $id = $_REQUEST['id'];  // the id sent
   ...
   echo json_encode($_SESSION);
?>

AJAX

... on('click','delegate', function() { ...

$.ajax(url, {  // $.getJSON works well too
   dataType:'json', 
   data:{id:someid}, 
   success:function(ses){
       // you should see the whole session as a tree 
       console.debug(ses);  
       // I also like to see big trees in the "DOM" in firebug
       window.SESSION = ses;
   }});
})

我觉得这只是打开了数据的整体图景,并且您最终会减少回调,因为您可以通过传递对象进行更多通信。您还可以做一些事情,比如处理消息而不仅仅是错误。

于 2013-08-19T17:54:20.517 回答