Как мне получить доступ к значениям, созданным serializeArray в JQuery?

У меня есть этот HTML:

<form id='myform'>
<input name='title' value='foo'/>
</form>

И я создаю массив объектов из него следующим образом:

var dataArray = $("#myform").serializeArray();

Теперь как мне получить доступ к 'title' в dataArray? Это не работает:

alert(dataArray['title']);
alert(dataArray['title'].val());

Ответы

Ответ 1

Подобно тому, что написал Nick, но немного чище

var dataArray = $("#myform").serializeArray(),
    dataObj = {};

$(dataArray).each(function(i, field){
  dataObj[field.name] = field.value;
});

Затем выберите тот же путь

alert(dataObj['title']);

Ответ 2

Вы можете выполнить цикл, поскольку @Tom имеет... или если вы получаете доступ к нескольким, будьте более эффективными и цикл один раз, создавая объект, подобный этому:

var dataArray = $("#myform").serializeArray(),
    len = dataArray.length,
    dataObj = {};

for (i=0; i<len; i++) {
  dataObj[dataArray[i].name] = dataArray[i].value;
}

Затем вы можете получить доступ к нему, как хотите, например:

alert(dataObj['title']); //or alert(dataObj.title);

Здесь вы можете проверить его.

Ответ 3

alert(dataArray[0].name);
alert(dataArray[0].value);

Итак:

for (i=0; i<dataArray.length; i += 1) {
    if (dataArray[i].name === "title") {
        // do something here...
    }
}

Ответ 4

Добавление этого в любом случае, чтобы помочь другим в будущем. Хороший способ быстро проверить все значения.

var formdata = $( "#myform" ).serializeArray();
var formdata = JSON.stringify(formdata);
alert (formdata);

Ответ 5

Запустите console.log(dataArray);, затем откройте инспектор свойств и проверьте консоль. В Chrome вы щелкнете правой кнопкой мыши и выберите "Осмотреть элемент", а затем щелкните значок " > =" в левом нижнем углу, второй - слева.

В Firefox вы установили firebug и там вкладку под названием "Консоль"

Не уверен, что он доступен в IE, возможно, что-то в инструментах разработчика (нажмите f12), но я бы не рекомендовал разрабатывать в IE.

В любом случае, это будет отображать объект таким образом, чтобы вы могли перемещаться и видеть значения каждого элемента. Таким образом, вы можете использовать это, чтобы расшифровать доступ к значениям:)

Удачи.

Ответ 6

append/echo/print dataArray[0].name для div даст вам название

Ответ 7

Предупреждение serializeArray входов в myDiv (примечание: селектор :input будет включать теги select и textarea!):

//alert(fData.length) // how many inputs got picked up 
var fData=$("#myDiv :input").serializeArray();
var msg=""; 
for(var i=0;i<fData.length;i++){
    var raKy=Object.keys(fData[i]); 
    msg+="\n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]); 
}
alert(msg);