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

how to parse a serialized array to a jQuery array

我有一个 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

现在我想 select 每个数组索引使用 jQuery $each.

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

        alert( value );
    });

我会得到错误:

TypeError: Cannot use 'in' operator to search for 'length' in item[]=51&item[]=41&item[]=49&item[]=35&item[]=58&item[]=45&item[]=32&item[]=36&item[]=26&item[]=27&item[]=33&item[]=31&item[]=29

所以我可能必须使用 JSON.parse():

将它解析为一个数组
        var data = $("#sortable").sortable('serialize');
    data=JSON.parse(data);
    $.each(data, function(index,  value ) {
        alert( value );
    });

这将导致错误

VM327:1 Uncaught SyntaxError: Unexpected token i in JSON at position 0

所以这可能是 JSON 解析器期望字符串的开头和结尾带有 " 的问题。

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

但这会导致第一个TypeError。

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

使用 "toArray" 方法而不是 "serialize" 方法。

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

顺便说一句,以下形式的字符串不是JSON。事实上,它甚至不接近 JSON.

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

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

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