serialize
возвращает строку в кодировке URL, содержащую поля формы.Если вам нужно добавить к нему, вы делаете это, используя стандартные строковые правила в кодировке URL, например:
var values = $("#frmblog").serialize();
values += "&content=" + encodeURIComponent(content_val);
(Выше предполагается, что всегда будет одно значение в values
после serialize
вызовите, если это не обязательно верно, определите, следует ли использовать &
, основываясь на том, пусто ли 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);
Возможно, вы захотите сделать эту функцию многоразовой.