如何将序列化数组解析为jQuery数组

时间:2016-06-18 18:39:00

标签: jquery arrays json parsing jquery-ui-sortable

我有一个jQuery可排序列表,我正在序列化结果。

var data = $("#sortable").sortable('serialize');

结果如下:

item[]=41&item[]=49&item[]=51&item[]=35&item[]=58&item[]=45&item[]=32&item[]=36&item[]=26&item[]=27&item[]=33&item[]=31&item[]=29

现在我想使用jQuery $each选择每个数组索引。

    $.each(data, function(index,  value ) {

        alert( value );
    });

我会得到错误:

  

TypeError:不能在'中使用'运营商搜索'长度'在项目[] = 51& item [] = 41& item [] = 49& item [] = 35& item [] = 58& item [] = 45& item [] = 32& item [] = 36& item [] = 26&安培;项[] = 27&安培;项[] = 33&安培;项[] = 31&安培;项[] = 29

所以我可能需要使用JSON.parse()解析数组:

        var data = $("#sortable").sortable('serialize');
    data=JSON.parse(data);
    $.each(data, function(index,  value ) {
        alert( value );
    });

这将导致错误

  

VM327:1未捕获的SyntaxError:位于0的JSON中的意外的令牌i

因此,可能是JSON解析器在开头和结尾处期望"字符串的问题。

var data = $("#sortable").sortable('serialize');
    data=JSON.stringify(data);
    data=JSON.parse(data);
    $.each(data, function(index,  value ) {
        alert( value );
    });

但这会导致第一个TypeError。

如何将jQuery可排序对象解析为数据数组?

1 个答案:

答案 0 :(得分:0)

使用“toArray”方法代替“serialize”方法。

var arr = $("#sortable").sortable('toArray');
$.each(arr, function(index, value) {
    alert(value);
});

BTW,以下表单的字符串不是JSON。事实上,它甚至不接近JSON。

  

项[] = 51&安培;项[] = 41&安培;项[] = 49&安培;项[] = 35安培;项[] = 58&安培;项[] = 45安培;项[] = 32&安培;项[] = 36&安培;项[] = 26&安培;项[] = 27&安培;项[] = 33&安培;项[] = 31&安培;项[] = 29

数组的JSON字符串如下所示:

  

[51,41,49,35,58,45,32,36,26,27,33,31,29]