Как мне получить доступ к значениям, созданным 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);