Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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 未打印会话变量_Javascript_Php - Fatal编程技术网

Javascript 未打印会话变量

Javascript 未打印会话变量,javascript,php,Javascript,Php,我有一个PHP后端脚本,在其中创建一个PHP会话变量: if(!isset($_SESSION)) session_start(); if(isset($_SESSION['uid'])) unset($_SESSION['uid']); $_SESSION['uid']=$this->_out; 在我的HTML脚本中,我使用以下方式访问它: editor = new $.fn.dataTable.Editor( { ajax: {url:"euseradd.php",c

我有一个PHP后端脚本,在其中创建一个PHP会话变量:

if(!isset($_SESSION))
    session_start();
if(isset($_SESSION['uid']))
    unset($_SESSION['uid']);
$_SESSION['uid']=$this->_out;
在我的HTML脚本中,我使用以下方式访问它:

editor = new $.fn.dataTable.Editor( {
ajax: {url:"euseradd.php",complete : function(){var uid='<?php if(!isset($_SESSION)) session_start();if(isset($_SESSION["uid"])){echo $_SESSION["uid"];unset($_SESSION["uid"]);}?>';alert(uid)}},
......................
} );
我得到一个错误,“注意:数组到字符串的转换”-我的目的是在一些日志中记录值,以查看后端也分配了什么值

编辑:

我通过以下方式修改了echo语句:

echo 'Value is ' . $_SESSION['uid']
echo 'Hello ' . serialize($this->_out);
现在我在浏览器端获取数据,如:

Hello  a:5:{s:2:"id";i:-1;s:11:"fieldErrors";a:0:{}s:5:"error";s:0:"";s:4:"data";a:0:{}s:3:"row";a:11:{s:8:"DT_RowId";s:7:"row_135";s:2:"id";s:3:"135";s:9:"last_name";s:6:"sdfdsf";s:10:"first_name";s:3:"dsf";s:8:"homeaddr";s:21:"sdfdsfsdfdsfdsfdsfdsf";s:5:"email";s:8:"s@jj.com";s:10:"officeaddr";s:24:"wwwwwwwwwwwwwwwwwwwwwwww";s:6:"mobile";s:8:"11111111";s:3:"age";s:2:"11";s:9:"chargeamt";s:2:"11";s:10:"start_date";s:10:"11/11/2011";}}{"row":{"DT_RowId":"row_135","id":"135","last_name":"sdfdsf","first_name":"dsf","homeaddr":"sdfdsfsdfdsfdsfdsfdsf","email":"s@jj.com","officeaddr":"wwwwwwwwwwwwwwwwwwwwwwww","mobile":"11111111","age":"11","chargeamt":"11","start_date":"11\/11\/2011"}}
我需要从中提取值“id”:“135”


实际上,由于某些限制,我无法使用成功函数进行操作。因为我正在解决一个问题,所以我正在为我遇到的问题编写代码

编辑:

我尝试打印如下值:

echo 'Hello ' . serialize($this->_out['row']['DT_RowId']);
我在控制台日志中获得以下输出:

Hello s:7:"row_140";{"row":{"DT_RowId":"row_140","id":"140","last_name":"sdfdsf","first_name":"dsf","homeaddr":"sdfdsfsdfdsfdsfdsfdsf","email":"s@jj.com","officeaddr":"wwwwwwwwwwwwwwwwwwwwwwww","mobile":"11111111","age":"11","chargeamt":"11","start_date":"11\/11\/2011"}}
我不确定输出的结构是什么,但如何从上面提取“id”:“140”。我只是猜测“row_140”不是一个固定名称,而是row_#record number

编辑:

下面是回声打印的输出($this->\u out)根据要求:

Array
(
    [id] => -1
    [fieldErrors] => Array
        (
        )

    [error] => 
    [data] => Array
        (
        )

    [row] => Array
        (
            [DT_RowId] => row_157
            [id] => 157
            [last_name] => sdfdsf
            [first_name] => dsf
            [homeaddr] => sdfdsfsdfdsfdsfdsfdsf
            [email] => s@jj.com
            [officeaddr] => wwwwwwwwwwwwwwwwwwwwwwww
            [mobile] => 11111111
            [age] => 11
            [chargeamt] => 11
            [start_date] => 11/11/2011
        )

)
1{"row":{"DT_RowId":"row_157","id":"157","last_name":"sdfdsf","first_name":"dsf","homeaddr":"sdfdsfsdfdsfdsfdsfdsf","email":"s@jj.com","officeaddr":"wwwwwwwwwwwwwwwwwwwwwwww","mobile":"11111111","age":"11","chargeamt":"11","start_date":"11\/11\/2011"}}

我不确定我是否理解你的问题。但是在php脚本中,
session\u start()
应该在页面的最开始调用。也就是说,在打印任何内容之前。因为会话头应该发送到浏览器

在执行ajax时,不要与PHP混淆。通过ajax将用户详细信息发送到PHP脚本。然后让php脚本返回用户id作为响应,然后您可以在javascript中使用它。您在浏览器上看到的页面实际上是PHP脚本的输出。我的意思是,PHP脚本中的所有PHP代码都将被执行,输出就是您在浏览器上获得的结果。所以,当您的页面被执行(从浏览器访问)时,
var uid=''已经有了PHP脚本的结果。在那次AJAX调用之后,它不会得到更新


对于数组错误,我相信您正在将数组分配给
$\u会话['uid']
。我认为如果您在该会话中将值(即用户id)存储为int或string而不是数组会更好

您不能像那样从jquery访问php变量 对于您的问题,有一个更简单的解决方案,只需
echo$\u SESSION['uid']
到您的jquery回调函数,并使用jquery访问它

useradd.php

if(!isset($_SESSION))
    session_start();
if(isset($_SESSION['uid']))
    echo $_SESSION['uid'];
    unset($_SESSION['uid']);
Jquery

    $.ajax({ 
        url  : "euseradd.php",
        cache: false,           
        success: function(responseText){ 
            alert(responseText); //this should contain your session uid
        }
    }); //end of ajax call
    return false;

看起来您正在会话变量中存储数组。$this->\u out中有什么?它是一个数组-如何将其转换为字符串并打印到Apache日志?您可以执行
$string=var\u导出($\u会话['uid',true)
然后使用
$string
进行日志记录。好的,如果需要从数组中提取某些键值,那么将其转换为字符串是没有意义的。您可以通过特定键访问该值。不过我不确定你说的对不对,谢谢。根据你数组的结构,
echo$this->\u out['row']['id']
应该会给你
157
。根据我最近的努力,如果我将值硬编码为如下字符串,那么我会跟进答案:$\u SESSION['uid']='001';我确实在我的网页中收到字符串为“001”的警报。由于某些原因,我无法在功能上使用AJAX success。由于某些限制,我无法在操作中使用success函数。因为我正在解决一个问题,所以我正在为我遇到的问题编写代码。那么,通过AJAX调用,您想做什么?发送一些信息到PHP页面,然后什么都不做?这就像对一个女孩说“我爱你”,然后闭上你的眼睛和耳朵,不知道她下一步会做什么?好吧,我想简单地回答一下-我使用的是Datatables,Datatables手册说Ajax成功函数不能被覆盖-如果我们这样做,我相信Datatables在这种情况下不会工作,AJAX调用只用于
获取记录。如果您想添加一个新记录,为什么不使用另一个ajax显式调用(不在抓取调用中)将数据发送到PHP页面,该页面将把记录插入数据库。对于显示记录的DataTable,执行刷新(即重新获取),以便使用完整的新记录更新DataTable。那不管用吗?否则,请查看该数据表的文档,看看是否有一些内置方法或其他有帮助的方法。没有-那么我有很多额外的代码要处理,有很多依赖关系。假设数据库中的一列被重命名、删除或添加