Ответ 1
serialize
возвращает строку с кодировкой URL, содержащую поля формы. Если вам нужно добавить к нему, вы делаете это, используя стандартные строковые правила, закодированные URL, например:
var values = $("#frmblog").serialize();
values += "&content=" + encodeURIComponent(content_val);
(Вышеприведенное предполагает, что после вызова serialize
всегда будет одно значение в values
, если это необязательно верно, определите, следует ли использовать &
на основе того, является ли values
пустым, прежде чем добавлять к нему.)
Альтернативно, если хотите, вы можете использовать serializeArray
, а затем добавить в массив и использовать jQuery.param
, чтобы превратить результат в строку запроса, но это выглядит длинным путем:
// You can also do this, but it seems a long way 'round
var values = $("#frmblog").serializeArray();
values.push({
name: "content",
value: content_val
});
values = jQuery.param(values);
Обновление. В добавленном комментарии вы сказали:
Проблема заключается в том, что во время процесса сериализации в ключе "контент" задаются значения по умолчанию, поэтому я не могу просто добавить новое значение, я должен обновить уже существующий "
Это меняет вещи. Это боль, чтобы искать content
в строке, закодированной в URL-адресе, поэтому я бы пошел с массивом:
var values, index;
// Get the parameters as an array
values = $("#frmblog").serializeArray();
// Find and replace `content` if there
for (index = 0; index < values.length; ++index) {
if (values[index].name == "content") {
values[index].value = content_val;
break;
}
}
// Add it if it wasn't there
if (index >= values.length) {
values.push({
name: "content",
value: content_val
});
}
// Convert to URL-encoded string
values = jQuery.param(values);
Вероятно, вы захотите сделать эту функцию повторно используемой.