【问题标题】:Using JQuery and PHP Session to remember users' array使用 JQuery 和 PHP Session 记住用户的数组
【发布时间】:2010-12-25 12:58:52
【问题描述】:

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

我有一个具有搜索功能的应用。搜索结果可能会跨越多个页面,并且每个结果都有一个复选框。这个想法是用户浏览结果并检查他们想要的项目,然后将结果输出到 PDF,每个页面底部都有一个按钮。所以我需要能够跟踪用户在页面之间检查的项目。

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

我的知识空白让我失败的是如何以可用的形式将数组返回到 JQuery。我通过使用以下命令来回发送数组的逗号分隔字符串版本来使其工作:

foreach($_SESSION["idsArray"] as $value) {
 $sendme .= $value.",";
}
echo $sendme;

我可以获取这些数据并在 JQuery 中将其分解,但我想知道是否由于我的知识有限,我遗漏了一些可以保持数组完整的东西?

谢谢。

【问题讨论】:

    标签: php jquery arrays session


    【解决方案1】:

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

    更好的是,您可以通过 JSON 将数组发送到 jQuery,正如 Darrell 所说,或者也可以作为 <script> 标签中的纯 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>';
    

    javascript 看起来像这样:

    $.post(..., function(data){
        eval(data);
        //you can now use the array
    });
    

    【讨论】:

    • 谢谢,我很快就尝试过了,我不得不将 data var 中的 html 附加到网页 - 使用 eval(data) 对我不起作用。此外,$value 需要用引号括起来(我相信你意识到但只是错过了): echo 'newArray.push("'.$value.'");';它有效,但我将尝试 JSON 方法,看看是否可以在不生成 HTML 的情况下做到这一点。
    • 诚然,JSON 更简洁、更容易。如果您需要同时传递 html 和 js 以节省 ajax 调用,这只是另一种选择。
    • 毫无疑问,我可以将这类技术添加到我的曲目中越多越好。
    【解决方案2】:

    我想,如果我正确理解了您的问题,您正在寻找的是json_encode()。如果您执行json_encode($_SESSION['idsArray']),那么您可以使用 $.ajax() 获取它并将 dataType 设置为“json”。然后数组会自动变成JavaScript数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2019-11-09
      • 2011-05-05
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      相关资源
      最近更新 更多