$(이것은)serialize() -- 값을 추가하는 방법을 지정합니다.
현재 저는 다음을 가지고 있습니다.
$.ajax({
type: 'POST',
url: this.action,
data: $(this).serialize(),
});
이것은 잘 작동하지만 데이터에 값을 추가하고 싶어서 시도했습니다.
$.ajax({
type: 'POST',
url: this.action,
data: $(this).serialize() + '&=NonFormValue' + NonFormValue,
});
하지만 그것은 정확하게 게시되지 않았습니다.직렬화 문자열에 항목을 추가하는 방법에 대한 아이디어가 있습니까?이것은 형태에 특정하지 않은 전역 페이지 변수입니다.
matt b의 답변이 효과가 있겠지만, 당신은 또한 사용할 수 있습니다..serializeArray()
양식 데이터에서 배열을 가져와 수정하고 사용하는 방법jQuery.param()
url-encoded 형태로 변환합니다.이런 방식으로 jQuery는 추가 데이터의 직렬화를 처리합니다.
var data = $(this).serializeArray(); // convert form to array
data.push({name: "NonFormValue", value: NonFormValue});
$.ajax({
type: 'POST',
url: this.action,
data: $.param(data),
});
대신에
data: $(this).serialize() + '&=NonFormValue' + NonFormValue,
당신은 아마도 원할 것입니다.
data: $(this).serialize() + '&NonFormValue=' + NonFormValue,
URL 인코딩에 주의해야 합니다.NonFormValue
특별한 문자가 포함되어 있을 수도 있습니다.
언제든지 할 수 있다는 것을 잊지 마십시오.
<input type="hidden" name="NonFormName" value="NonFormValue" />
당신의 실제 형태로, 경우에 따라 당신의 코드에 더 좋을 수 있습니다.
우선 하지 말아야 할
data: $(this).serialize() + '&=NonFormValue' + NonFormValue,
있다
data: $(this).serialize() + '&NonFormValue=' + NonFormValue,
그리고 두번째로 당신은 사용할 수 있습니다.
url: this.action + '?NonFormValue=' + NonFormValue,
또는 작업에 이미 매개 변수가 포함되어 있는 경우
url: this.action + '&NonFormValue=' + NonFormValue,
항목을 먼저 추가한 다음 일련화합니다.
$.ajax({
type: 'POST',
url: this.action,
data: $.extend($(this), {'NonFormValue': NonFormValue}).serialize()
});
다음과 같이 할 수 있습니다.
data = $form.serialize() + "&foo=bar";
예를 들어,
var userData = localStorage.getItem("userFormSerializeData");
var userId = localStorage.getItem("userId");
$.ajax({
type: "POST",
url: postUrl,
data: $(form).serialize() + "&" + userData + "&userId=" + userId,
dataType: 'json',
success: function (response) {
//do something
}
});
이보다 나은 점:
data: [$(this).serialize(),$.param({NonFormValue: NonFormValue})].join('&')
양식 데이터를 처리하기 위한 추가 함수를 작성할 수 있으며 양식의 데이터 값으로 비정형 데이터를 추가해야 합니다.예를 참조:
<form method="POST" id="add-form">
<div class="form-group required ">
<label for="key">Enter key</label>
<input type="text" name="key" id="key" data-nonformdata="hai"/>
</div>
<div class="form-group required ">
<label for="name">Ente Name</label>
<input type="text" name="name" id="name" data-nonformdata="hello"/>
</div>
<input type="submit" id="add-formdata-btn" value="submit">
</form>
그런 다음 폼 처리를 위해 이 jquery를 추가합니다.
<script>
$(document).onready(function(){
$('#add-form').submit(function(event){
event.preventDefault();
var formData = $("form").serializeArray();
formData = processFormData(formData);
// write further code here---->
});
});
processFormData(formData)
{
var data = formData;
data.forEach(function(object){
$('#add-form input').each(function(){
if(this.name == object.name){
var nonformData = $(this).data("nonformdata");
formData.push({name:this.name,value:nonformData});
}
});
});
return formData;
}
언급URL : https://stackoverflow.com/questions/6539502/this-serialize-how-to-add-a-value
'programing' 카테고리의 다른 글
조합 또는 가입 사용 - 더 빠른 것 (0) | 2023.11.06 |
---|---|
PHP나 자바스크립트를 사용하지 않고 콘텐츠에 맞게 텍스트 영역을 확장할 수 있는 방법이 있습니까? (0) | 2023.11.06 |
C의 문자열을 빈 문자열로 초기화 (0) | 2023.11.06 |
페이지가 로드될 때 텍스트 입력에서 포커스를 제거할 수 있습니까? (0) | 2023.11.01 |
팬더 데이터 프레임을 위치별로 자르는 방법은? (0) | 2023.11.01 |