jQuery: serialize() 형식 및 기타 파라미터
단일 AJAX 요청으로 폼 요소(메서드로 시리얼화) 및 기타 파라미터를 전송할 수 있습니까?
예:
$.ajax({
type : 'POST',
url : 'url',
data : {
$('#form').serialize(),
par1 : 1,
par2 : '2',
par3: 232
}
}
그렇지 않은 경우 양식을 다른 매개 변수와 함께 제출하는 가장 좋은 방법은 무엇입니까?
감사해요.
serialize()는 폼 값을 유효한 쿼리 문자열로 효과적으로 변환하기 때문에 문자열에 추가할 수 있습니다.
$.ajax({
type : 'POST',
url : 'url',
data : $('#form').serialize() + "&par1=1&par2=2&par3=232"
}
또는 다음 명령을 사용할 수 있습니다.form.serialize()와 함께$.param(object)매개 변수를 일부 개체 변수에 저장하는 경우.사용 방법은 다음과 같습니다.
var data = form.serialize() + '&' + $.param(object)
자세한 것은, http://api.jquery.com/jQuery.param 를 참조해 주세요.
모르겠습니다만, 위의 어느 것도 효과가 없었습니다.그 후, 이것을 사용하고, 효과가 있었습니다.
폼의 시리얼 어레이에서는 주요 값 쌍으로 저장됩니다.
폼 변수에서 새로운 값을 푸시하여 이 변수를 직접 전달할 수 있습니다.
var form = $('form.sigPad').serializeArray();
var uniquekey = {
name: "uniquekey",
value: $('#UniqueKey').val()
};
form.push(uniquekey);
serialize 형식으로 데이터를 전송하려면 다음과 같이 하십시오.
var form= $("#formId");
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize()+"&variable="+otherData,
success: function (data) {
var result=data;
$('#result').attr("value",result);
}
});
$("#add_form").submit(function(e) {
e.preventDefault();
var total_qty = $('#total_qty').text();
var total_amt = $('#total_amt').text();
$("#add_btn").val('adding....');
$.ajax({
url: 'action.php',
method: 'post',
data: $(this).serialize() + "&total_qty="+total_qty + "&total_amt="+total_amt,
success: function(data){
console.log(data);
}
});
});
다음과 같은 매개 변수 값 전달
data : $('#form_id').serialize() + "¶meter1=value1¶meter2=value2"
기타 등등.
Rory McCrossan 응답에 이어 정수 배열을 보내는 경우(대부분)NET) 코드는 다음과 같습니다.
// ...
url: "MyUrl", // For example --> @Url.Action("Method", "Controller")
method: "post",
traditional: true,
data:
$('#myForm').serialize() +
"¶m1="xxx" +
"¶m2="33" +
"&" + $.param({ paramArray: ["1","2","3"]}, true)
,
// ...
js로 인코딩합니다.
var temp = $("#pay_property_amount").serialize();
temp = btoa(temp);
그리고 ajex를 통과합니다.
data: { temp_data : temp },
php로 디코딩하다
$temp_data = base64_decode($this->input->post('temp_data'));
if($temp_data){
$temp_data = $this->unserializeForm($temp_data);
}
function unserializeForm($str) {
$returndata = array();
$strArray = explode("&", $str);
$i = 0;
foreach ($strArray as $item) {
$array = explode("=", $item);
if (preg_match('/(%5B%5D)/', $array[0])) {
$array[0] = str_replace('%5B%5D','',$array[0]);
if(array_key_exists($array[0],$returndata)){
$returndata[$array[0]][]=$array[1];
}else{
$returndata[$array[0]] =array();
$returndata[$array[0]][]=$array[1];
}
}else
{
$returndata[$array[0]] = $array[1];
}
}
return $returndata;
}
양식 데이터에 새 데이터를 추가하려는 사용자는 이 방법을 사용할 수 있습니다.예:
$("form#myForm").submit(function(e){
e.preventDefault();
let formData = jQuery("#myForm").serializeArray();
let newData = [
{name:"city", value: "Ankara"},
{name:"jobs", value: "Full-Stack Web Developer"},
{name:"action", value: "ajax_proccess"}
];
let postData = formData.concat(newData);
console.log(formData);
console.log(newData);
console.log(postData);
jQuery(".alert").text("İş: " + postData[4]['value']);
jQuery.ajax({
url: jQuery("#myForm").attr('action'),
type: 'POST',
dataType: 'json',
data: postData,
success: function(data) {
//let response = JSON.parse(data);
console.log(data);
alert('Submitted.');
jQuery(".alert").text(newData[5]);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="POST" action="" id="myForm">
<input type="hidden" name="name" value="Mahmut Yüksel">
<input type="hidden" name="surname" value="Mert">
<input type="hidden" name="countary" value="Turkey">
<input type="submit" value="Gönder">
</form>
<div class="alert">İş: </div>
시리얼라이즈를 사용할 수도 있습니다.어레이 기능을 통해 동일한 작업을 수행합니다.
다른 형식의 내용으로 jQuery를 사용하여 보조 형식을 작성한 후 다른 파라미터에서 추가할 수 있습니다.따라서 이 형식을 Ajax 콜에서만 시리얼화하면 됩니다.
function createInput(name,value){
return $('<input>').attr({
name: name,
value: value
});
}
$form = $("<form></form>");
$form.append($("#your_form input").clone());
$form.append(createInput('input_name', 'input_value'));
$form.append(createInput('input_name_2', 'input_value_2'));
....
$.ajax({
type : 'POST',
url : 'url',
data : $form.serialize()
}
under statement로 문제를 해결했습니다; 동일한 GET methode로 데이터를 보냅니다.
$.ajax({
url: 'includes/get_ajax_function.php?value=jack&id='+id,
type: 'post',
data: $('#b-info1').serializeArray(),
가치를 얻을 수 있는$_REQUEST['value']또는$_GET['id']
언급URL : https://stackoverflow.com/questions/10398783/jquery-serialize-form-and-other-parameters
'codememo' 카테고리의 다른 글
| 스프링 부트 구성에서 올바른 MySQL JDBC 시간대를 설정하는 방법 (0) | 2023.03.04 |
|---|---|
| 리액트 리듀스: 리듀서 조합:예기치 않은 키 (0) | 2023.03.04 |
| react-passion vs react-passion-dom, 어느 한쪽을 사용할 것인가? (0) | 2023.03.04 |
| 스프링 Application Context를 닫는 방법 (0) | 2023.03.04 |
| Angular.js와 부트스트랩 폼 검증 스타일 조정 (0) | 2023.03.04 |