Как доступа к значениям, созданным SerializearRay в jQuery?
-
26-09-2019 - |
Вопрос
У меня есть этот HTML:
<form id='myform'>
<input name='title' value='foo'/>
</form>
И я создаю массив объекта от этого, как это:
var dataArray = $("#myform").serializeArray();
Теперь, как я могу получить доступ к «Title» в DataArray? Это не работает:
alert(dataArray['title']);
alert(dataArray['title'].val());
Решение
Похоже на то, что ник опубликовал, но немного очистить
var dataArray = $("#myform").serializeArray(),
dataObj = {};
$(dataArray).each(function(i, field){
dataObj[field.name] = field.value;
});
Затем доступ к тому же способу
alert(dataObj['title']);
Другие советы
Вы можете либо пережить, как @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);
alert(dataArray[0].name);
alert(dataArray[0].value);
Так:
for (i=0; i<dataArray.length; i += 1) {
if (dataArray[i].name === "title") {
// do something here...
}
}
Бегать console.log(dataArray);
, Затем откройте инспектор недвижимости и проверьте консоль. В Chrome вы можете щелкнуть правой кнопкой мыши и выберете «Осмотрите элемент», а затем щелкните значок «> =», выглядящую внизу внизу внизу, это вторая слева.
В Firefox вы бы установили Firebug и есть вкладка «Консоль»
Не уверен, что он доступен в IE, вероятно, что-то в инструментах разработчика (нажмите F12.) Но я бы не рекомендовал развиваться в IE.
В любом случае, это будет прочитать объект таким образом, чтобы вы могли перемещаться и увидеть значения каждого элемента. Таким образом, вы можете использовать это, чтобы расшифровать, как получить доступ к значениям :)
Удачи
В любом случае добавляю это, чтобы помочь другим в будущем. Хороший способ быстро осматривать все значения.
var formdata = $( "#myform" ).serializeArray();
var formdata = JSON.stringify(formdata);
alert (formdata);
Добавить / echo / print dataArray[0].name
для Div даст вам «титул»
Осознавание сериализеарара входов в Мидиве (Примечание: :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);
С участием uderscore.js
, вот как мы можем пойти в это:
var serializedArray = $('form#spiderman-application').serializeArray();
var serializedObject = _.object(
_.pluck(serializedArray, 'name'),
_.pluck(serializedArray, 'value')
)
console.log(serializedObject);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
<form id="spiderman-application">
<legend>Application Form</legend>
<input name="./fname" value="Peter" />
<input name="./lname" value="Parker" />
</form>
Удачи...