【问题标题】:Array Serialization Issue数组序列化问题
【发布时间】:2013-01-28 13:15:42
【问题描述】:

我正在将一些使用 jQuery 序列化的信息存储到 MySQL 数据库中:

$(function () {
    $("#sortable").sortable({
        stop: function (event, ui) {
            $("#q35list").val($(this).sortable('serialize'));
        }
    });
    $("#sortable").disableSelection();

这会将相关信息存储在数据库中(通过 .php 保存页面)。

但是,当我返回它并使用以下命令对其进行反序列化时:

$arr = unserialize($results['q35list']);
if(!$arr) $arr=array();
var_dump($arr);

这不是一个数组!如下:

string(55) "Set[]=2&Set[]=1&Set[]=3&Set[]=4&Set[]=5&Set[]=6&Set[]=7"

我现在处于从树上看不到树林的地步......

【问题讨论】:

  • 你确定 PHP 序列化和 jQuery 序列化的工作方式相同吗?
  • 只是想知道同样的问题 - 看起来他们没有!
  • 其实我应该说的是,有没有什么简单的方法可以得到最后一个字符串中数字的顺序?
  • 请参阅下面的@Benz 建议。 parse_str() 将允许您“反序列化”存储的 jQuery 的查询字符串值。

标签: php jquery mysql serialization query-string


【解决方案1】:

jQuery 序列化和 PHP 序列化是两个不同的东西。 jQuery 专注于能够通过 CGI(GET 或 POST)发送数据,PHP 序列化专注于将结构化数据存储在字符串中。

它们不可互换。

你必须在同一个平台进行序列化和反序列化,否则不起作用。

【讨论】:

  • 干杯巴特 - 刚刚意识到我的错误!只是要弄清楚如何做到这一点。谢谢。
  • 只需将序列化的字符串提供给您的 jQuery 并在那里反序列化。
【解决方案2】:

我不太确定,但你不能使用parse_str() 函数

像这样

parse_str($string, $array); 

其中 $string 是来自 mysql 的数据,$array 是您可以用来获取数据的数组。

【讨论】:

    【解决方案3】:

    可能有一种更简单的方法可以解决您的问题,但如果没有其他方法,您也可以使用explode() 将字符串分成几部分并创建您的数组。

    【讨论】:

    • 正是我刚刚所做的 - 不漂亮,但它有效 - 感谢 AnPel。
    • @Homer_J 不是最佳想法。见上面奔驰的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2021-08-23
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    相关资源
    最近更新 更多