2016-06-18 3 views
0

У меня есть сортируемый список jQuery, и я сериализую результат.как разбирать сериализованный массив в массив 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: 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

Так что это может быть проблема t JSON парсер ожидает строку с " в начале и в конце.

Но это приведет к первому TypeError.

Как я могу разобрать сортируемый объект jQuery в массив данных?

ответ

0

Используйте метод «toArray» вместо метода «serialize».

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

BTW, строка следующего вида не 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]

+0

Хорошо, что работает. Большое спасибо. – Mark

Смежные вопросы