Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将会话变量从PHP传递到JS_Javascript_Php_Jquery - Fatal编程技术网

Javascript 将会话变量从PHP传递到JS

Javascript 将会话变量从PHP传递到JS,javascript,php,jquery,Javascript,Php,Jquery,我目前正在使用一些jQuery来获取td单元中的内容。然后,我通过一个变量将该内容传递到另一个文件。我正试图找出获取会话变量的最佳方法,但似乎遇到了一些问题。下面是一些简短的伪代码以及我的JS/jQuery 编辑/更新 下面的帖子也更正了。这里是my ManageUsers.inc.php <?php // Load 404 page if file is accessed directly if(!defined('INCLUDE_CHECK')) die(header("HTTP/1.

我目前正在使用一些jQuery来获取td单元中的内容。然后,我通过一个变量将该内容传递到另一个文件。我正试图找出获取会话变量的最佳方法,但似乎遇到了一些问题。下面是一些简短的伪代码以及我的JS/jQuery

编辑/更新

下面的帖子也更正了。这里是my 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';
?>

变量id=“”;

这里有两种选择

  • PHP文件可以将会话变量作为
    $.get
    调用中返回的
    数据的一部分发送回

  • 如果会话值在页面执行期间没有改变,那么您可以按照其他人的建议,通过执行
    echo$\u session['bus\u id']

  • 如果你在工作中遇到困难,你可以这样做。将您的HTML文件缩减为以下内容(我将省去标题内容,我认为它在您的文件中是正确的):

    myfunctions.js

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

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

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

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

    PHP


    我觉得这只是打开了数据的整体画面,您最终进行的回调更少,因为您可以通过传递对象进行更多的通信。您还可以处理消息,而不仅仅是错误。

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

    解决方案

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

    你有没有试着坚持在JavaScript代码的中间?(随机猜测。)@Ariane我尝试先这么做,然后用警报测试,但警报没有弹出。我不确定是否因此存在另一个问题。您现在如何将会话传递回JS?通过get?另外,我希望您的
    中。
    否则无效。@putvande td在表中。如上所述,我只是草草记下了简单的伪代码。我实际上传递了两个变量。第一个是td内部的内容。第二个是会话变量。我正在试图找到一种获取会话变量的方法,以便将其发送到Update_User.inc。php@CBC_NS您是否尝试过在页面中的任意位置,JS之外放置一个如上所述的
    echo
    ?如果没有显示预期的值,那么一开始就无法访问它,您需要重新编写PHP。如果它这样做了,并且它在Javascript中插入了PHP,这造成了一个问题,那么您可以尝试在一个隐藏的输入中简单地
    echo
    您的值,然后使用JS获取它的值。是的,它基本上避开了这个问题,但如果你不明白为什么PHP和JS之间的数据传输不起作用,而且这对你深入研究还不够重要,那么问题总是存在的。本质上,这应该是答案。正如我在上面回应Ariane时提到的,它甚至没有触发警报。想法?试着用单引号来表示字符串,这是我认为的方式,它对我很有效。单引号给出语法错误,双引号回荡/提醒整个行。它是否使用php回荡结果…?(不使用js,它是否有效…?)因此,根据您的建议,发生了以下情况。变量总线id=“”;//语法错误var bus_id=“”;//当警报弹出时得到结果。正如我在下面提到的,当我按您和Sobin的方式键入/或粘贴那行代码时,是否给了我语法错误?我想要的会话变量在php页面上是活动的。是的,我在外部和内部都有单引号。我修复了它,应该可以正常工作。当我发出警报(myvar)时,结果是。一旦我把它发送回我的php文件,它会改变吗?啊,好吧,这是在一个叫做
    myfile.html
    的文件中发生的,对吗?您需要将其重命名为
    myfile.php
    @CBC\n是的,问题是php从未解析该文件。这是一个.js文件,不是.php文件。这就是我说的
    “这是在一个名为myfile.html的文件中发生的,对吗?你需要将它重命名为myfile.php”
    。在PHP文件中创建的脚本块中定义变量,然后将其作为变量传递给在外部.js文件中调用的函数。
    <div>
    <?php
        print_r($_SESSION);
    ?>
    </div>
    
    <script>
    var myvar = "<?php echo $_SESSION['bus_id']; ?>";
    </script>
    
    <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>
    
    function setup_binds(bus_id) {
        $(".user").on("click",function(){
            alert("bus_id is: " + bus_id);
        });
    }
    
    <?php
       $id = $_REQUEST['id'];  // the id sent
       ...
       echo json_encode($_SESSION);
    ?>
    
    ... 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;
       }});
    })
    
    <input type = "hidden" id="bus" name="bus" value="<?php echo $_SESSION['bus_id']; ?>">
    
    bus_id = (bus.value);