Хорошо, поэтому я хочу передать очень простой массив в серверную часть данных jquery, например:
<div data-stuff="['a','b','c']"></div>
а затем вернуться вот так:
var stuff = $('div').data('stuff');
alert(stuff[0]);
Почему появляется предупреждение "[", а не "a" (см. Ссылку JSfiddle)
Ссылка JSFiddle: http://jsfiddle.net/ktw4v/3/
источник
Объявление его как атрибута означает, что это строка.
Это
stuff[0]
было бы эквивалентно:var myString = "['a','b','c']"; alert(myString[0]);
Вам нужно, чтобы это выглядело так:
<div data-stuff="a,b,c"></div> var stuff = $('div').data('stuff').split(','); alert(stuff[0]);
Отзыв: синтаксический анализ jQuery не выполняется, потому что он не соответствует правилам parseJSON.
Однако я буду поддерживать свое решение. Есть аспекты других, которые далеки от идеала, так же как и это решение в некоторых отношениях далеко не идеально. Все зависит от ваших парадигм.
источник
Как определили другие, значение обрабатывается как строка, поэтому оно возвращает "[". Пожалуйста, попробуйте это (aaa - это имя div, и я вынул данные):
$(function(){ $.data($("#aaa")[0],"stuff",{"aa":['a','b','c']}); var stuff = $.data($("#aaa")[0],"stuff").aa; alert(stuff[0]); //returns "a" });
источник
Другой подход размещен на jsfiddle ;
var stuff = $('div').data('stuff');
материал - это строка с 0-м символом как '['Ну,
var stuff = eval($('div').data('stuff'));
должен получить вам массивисточник