jQuery에서 serialized form data를 수정하려면 어떻게 해야 합니까?
AJAX에서 양식을 제출하려고 하니 자료를 직렬화()해야 합니다.하지만 저는 사용하고 있습니다.fckEditor
그리고 jQuery는 그것을 어떻게 처리해야할지 몰라서 serialization 후에 수동으로 값을 수정하려고 노력하고 있지만 아직까지 운이 없습니다.아무 생각도
if(content_val!=""){
var values = $("#frmblog").serialize();
values.content = content_val; //content_val is the manually fetched data which I am trying to insert into the serialized content.
alert(content_val); alert(values);
}
serialize
폼 필드가 들어 있는 URL로 인코딩된 문자열을 반환합니다.추가해야 할 경우 표준 URL 인코딩 문자열 규칙을 사용하여 다음과 같이 수행합니다.
var values = $("#frmblog").serialize();
values += "&content=" + encodeURIComponent(content_val);
(위의 가정은 다음과 같은 값이 항상 존재한다고 가정합니다.values
후에serialize
호출; 반드시 그렇지 않은 경우 사용 여부를 결정합니다.&
여부에 따라values
를 추가하기 전에 비워 둡니다.)
또는 원하는 경우 를 사용한 후 배열에 추가하고 를 사용하여 결과를 쿼리 문자열로 변환할 수도 있습니다. 하지만 이 작업은 상당히 긴 작업으로 보입니다.
// 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);
업데이트: 나중에 추가된 의견에서 다음과 같이 말했습니다.
문제는 serilization 과정에서 'content' 키에 일부 기본값이 설정되어 있어서 새로운 값만 붙일 수는 없고, 이미 있는 값을 업데이트해야 한다는 것입니다."
그것은 상황을 바꿉니다.찾기가 너무 힘들어요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);
당신은 아마 이것을 재사용 가능한 기능으로 만들고 싶을 것입니다.
ES15로.대신 현재 제출된 값(가장 짧은 값)을 편집할 때 사용할 수 있습니다.
var values = $("#frmblog").serializeArray();
values.find(input => input.name == 'content').value = content_val;
console.log(values);
또는 네이티브 함수
var values = $("#frmblog").serializeArray();
values.find(function(input) {
return input.name == 'content';
}).value = content_val;
console.log(values);
여기 @T 기반의 전체 jquery 플러그인이 있습니다.J의 대답.전화하셔도 됩니다.
$('form#myForm').awesomeFormSerializer({
foo: 'bar',
})
매개 변수 'foo'를 값 'bar'(또는 개체에 추가하는 다른 매개 변수)로 대체하거나 추가합니다.
jQuery 플러그인:
// Not builtin http://stackoverflow.com/a/5075798/2832282
(function ( $ ) {
// Pass an object of key/vals to override
$.fn.awesomeFormSerializer = function(overrides) {
// Get the parameters as an array
var newParams = this.serializeArray();
for(var key in overrides) {
var newVal = overrides[key]
// Find and replace `content` if there
for (index = 0; index < newParams.length; ++index) {
if (newParams[index].name == key) {
newParams[index].value = newVal;
break;
}
}
// Add it if it wasn't there
if (index >= newParams.length) {
newParams.push({
name: key,
value: newVal
});
}
}
// Convert to URL-encoded string
return $.param(newParams);
}
}( jQuery ));
다음과 같은 기능을 사용합니다.
function(elementName,newVal)
{
var postData = $("#formID").serialize();
var res = postData.split("&");
var str = "";
for(i=0;i<res.length;i++)
{
if(elementName == res[i].split("=")[0])
{
str += elementName + "=" + newVal+ "&";
}
else
{
str += res[i] + "&";
}
}
return str;
}
당신이 필요로 하는 일을 이렇게 해줄 겁니다
formData = $('#'+formID).find(":input")
.filter(function (i, item) {
if (item.name.includes('nameToBeChanged'))
{
item.name = item.name.replace('nameToBeChanged', 'toChangedName');
return true;
} else {
return false;
}
}).serialize();
이렇게 하면 양식 요소 이름이 영구적으로 변경됩니다.
언급URL : https://stackoverflow.com/questions/5075778/how-do-i-modify-serialized-form-data-in-jquery
'programing' 카테고리의 다른 글
PL/SQL에서 돌아오는 커서를 닫는 방법은? (0) | 2023.10.03 |
---|---|
브라우저 콘솔에서 http 오류가 기록되지 않도록 방지 (0) | 2023.10.03 |
여러 덱스 파일에서 Landroid/support/v4/Accessibility Service/AccessibilityServiceInfoCompat를 정의합니다. (0) | 2023.10.03 |
Spring ApplicationContext 계층 구조를 사용하는 이유는 무엇입니까? (0) | 2023.10.03 |
중복 항목 잡기 예외 (0) | 2023.10.03 |