Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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
使用JQuery和PHP会话来记住用户';排列_Php_Jquery_Arrays_Session - Fatal编程技术网

使用JQuery和PHP会话来记住用户';排列

使用JQuery和PHP会话来记住用户';排列,php,jquery,arrays,session,Php,Jquery,Arrays,Session,我是一名设计师,涉足使用JQuery和PHP编写脚本。我对这两个方面的功能都有很好的理解,但是使用会话对我来说是新的 我有一个带有搜索功能的应用程序。搜索结果可能会覆盖多个页面,每个结果都有一个复选框。其思想是用户浏览结果并勾选他们想要的项目,然后将结果输出到PDF,每个页面底部都有一个按钮。因此,我需要能够跟踪用户在页面之间签出的项目 我使用的方法是使用存储在$\u会话中的数组跟踪选中的项目。每次选中一个项时,JQuery都会使用$.post将ID发送到session.php文件,其思想是se

我是一名设计师,涉足使用JQuery和PHP编写脚本。我对这两个方面的功能都有很好的理解,但是使用会话对我来说是新的

我有一个带有搜索功能的应用程序。搜索结果可能会覆盖多个页面,每个结果都有一个复选框。其思想是用户浏览结果并勾选他们想要的项目,然后将结果输出到PDF,每个页面底部都有一个按钮。因此,我需要能够跟踪用户在页面之间签出的项目

我使用的方法是使用存储在$\u会话中的数组跟踪选中的项目。每次选中一个项时,JQuery都会使用$.post将ID发送到session.php文件,其思想是session.php将其推送到会话存储数组中,反之则是取消选中一个项。单击“convert to pdf”按钮后,JQuery从session.php获取数组并将其发送到另一个php页面,该页面使用ID进行查询并执行所有pdf转换工作

我所知的不足之处在于如何将数组以可用的形式返回到JQuery。我使用以下命令来回发送逗号分隔的字符串版本的数组:

foreach($_SESSION["idsArray"] as $value) {
 $sendme .= $value.",";
}
echo $sendme;
我可以获取这些数据并在JQuery中进行分解,但我想知道是否由于我的知识有限,我遗漏了一些可以保持数组完整的内容


谢谢。

我想,如果我正确理解了你的问题,你要找的是。如果执行
json\u编码($\u会话['idsArray'])
,则可以使用$.ajax()获取该代码,并将数据类型设置为“json”。然后数组将自动转换为JavaScript数组。

首先,您可以使用php函数将数组转换为字符串格式

不过更好的是,正如Darrell所说,您可以通过JSON将数组发送到jQuery,或者也可以通过
标记中的纯html,然后使用javascript函数
eval()
将其转换为jQuery可以使用的数组。PHP看起来像:

echo '<script type="text/javascript">
    var newArray = new Array();';

foreach($_SESSION['idsArray'] as $value){
    echo 'newArray.push('.$value.');';
}
echo '</script>';

谢谢,我很快就试过了,我不得不将数据变量中的html附加到网页上——使用eval(数据)对我来说不起作用。另外,$value还需要用引号括起来(我相信您已经意识到了,但只是漏掉了引号):echo'newArray.push(“.$value.”);它可以工作,但我将尝试JSON方法,看看是否可以不生成HTML就完成它。如果您需要同时传递html和js以节省ajax调用,这只是另一种选择。毫无疑问,我可以向我的曲目中添加的此类技术越多越好。
$.post(..., function(data){
    eval(data);
    //you can now use the array
});