Как получить доступ к сериализованным данным jQuery?
как я могу получить доступ к данным, который был сериализован с помощью функции jQuery?
var test = $("form").serialize();
у меня есть эти данные...
url=hello+1&title=hello+1&content=abc
как я могу получить значение 'URL-адрес'? - Я пробовал...
console.log(test.url);
но я undefined
- Я хочу получить результат как "hello+1"
3 ответов
метод serialize создает только строку, закодированную URL-адресом, из формы, но это строка i.e вы не можете получить значение url или любое другое значение. Для этого вам нужно проанализировать обратно строку в объект. Вы можете проверить библиотеку:https://github.com/kflorence/jquery-deserialize
однако было бы лучше, если бы вы просто выбрали поле, содержащее это значение, и получили его оттуда, т. е.
jQuery('input[name="url"]').val();
или если у вас есть id или класс на этом поля, вы можете использовать его в качестве селектора.
P. S. В значение url "Привет 1" в + это просто как пробелы кодируются в строках запроса.
на serialize()
метод предназначен для создания строки с кодировкой URL, обычно используемой для запросов AJAX к серверу. Это означает, что вы не можете получить доступ к строке как к объекту или массиву в традиционном смысле, вместо этого у вас есть два варианта достижения желаемого результата...
(этот вопрос может быть старым, но оригинальные ответы на самом деле не отвечают на первоначальный вопрос и не дают много объяснений...)
Способ 1 : Сериализовать Массив
первый метод и мой предпочтительный, чтобы использовать serializeArray()
метод, это может быть полезным методом, если у вас есть несколько значений и вы хотите получить значение каждого, а не явно выбирать каждый элемент, чтобы получить там значение.
решение, как показано ниже, с помощью этого метода сериализует выбранную форму или элемент в массив объектов, которые затем могут быть помещены в один объект и легко доступны с помощью функции для получите значения, когда и где они вам нужны в вашем скрипте...
//Serialize the Form
var values = {};
$.each($("form").serializeArray(), function (i, field) {
values[field.name] = field.value;
});
//Value Retrieval Function
var getValue = function (valueName) {
return values[valueName];
};
//Retrieve the Values
var url = getValue("url");
здесь JSFiddle Фрагмент Кода...
$(document).ready(function () {
var values = {};
$.each($("form").serializeArray(), function (i, field) {
values[field.name] = field.value;
});
var getValue = function (valueName) {
return values[valueName];
};
var first = getValue("FirstName");
var last = getValue("LastName");
$("#results").append(first + " & ");
$("#results").append(last);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<form action="">
First name:
<input type="text" name="FirstName" value="Foo" />
<br>Last name:
<input type="text" name="LastName" value="Bar" />
<br>
</form>
<div id="results"></div>
Метод 2: Значение Элемента
второй метод, как уже упоминалось, заключается в том, чтобы просто получить значение непосредственно из элемента формы, который вы пытаетесь собрать, а не сериализовать значение. Это можно просто достичь с помощью jQuery val()
метод - это будет введенное значение селектора.
хотя этот метод прост для выбора одного элемента, он может быстро стать беспорядочным при попытке выбрать и получить значение нескольких элементов из формы...
$("input").val();
serialize()
функция возвращает строку, поэтому вы не можете использовать ее как объект.
для десериализации строки можно использовать jQuery BBQ $.deparam()
функция:
Вы можете найти пример и документация здесь