티스토리 뷰
로그인 창처럼 form 태그 내에 ID, PW 정도의 많지 않은 정보만 보낸다면 Vue의 Data객체와
ID PW 내용을 v-model 디렉티브로 양방향 연결해서 json 객체를 axios나 ajax로 보내면 됩니다.
하지만 위 방식대로 form 태그 내 수많은 정보가 있는데 이를 일일이 v-model로 연결하는건 효율적이지 못합니다.
<form id="sendForm" @submit.prevent="sendPost">
<input type="text" id="text1" name="tex1">
<input type="text" id="text2" name="tex2">
<input type="text" id="text3" name="tex3">
<input type="text" id="text4" name="tex4">
<input type="text" id="text5" name="tex5">
<input type="text" id="text6" name="tex6">
<input type="text" id="text7" name="tex7">
<input type="text" id="text8" name="tex8">
<input type="text" id="text9" name="tex9">
<input type="text" id="text10" name="tex10">
<button id="btnRegistItem">Regist</button>
</form>
발생원인 : form 태그 내 다수의 정보를 별도의 Data객체와 연결없이 보낼 방법은?
해결방법 :
구글에서 검색해보면 FormData를 쓰라는 글이 많습니다.
methods: {
sendPost() {
var form = document.getElementById('sendForm');
var formData = new FormData(form);
axios.post('/someUrl', formData)
.then((response) => {
// success callback
}, (response) => {
// error callback
});
}
}
방식은 위와 같습니다만 저는 어떤 이유에선지 Data가 제대로 끌어와지지 않았습니다.
대신 Jquery의 serializeArray를 활용하여 해결했습니다.
methods: {
sendPost() {
var obj = null
var arr = $('#sendForm').serializeArray()
if (arr) {
obj = {};
jQuery.each(arr, function() {
obj[this.name] = this.value;
});
}
$.ajax({
url:'/someUrl',
dataType:'json',
async: false,
contentType:'application/json',
data:JSON.stringify({obj}),
method:'POST',
success:function(t){
// success callback
},
error:function(){
// error callback
}
});
}
}
( 하나의 예시일뿐 굳이 ajax로 보낼 필요 없습니다. )
한가지 주의할 점은 form 태그 내 전송할 data tag는 name이 필수적으로 들어가야 합니다.
그래야 serializeArray할때 data를 정상적으로 가져옵니다.
methods: {
sendPost(e) {
var data = e.target.elements['text1'].value
}
}
특정 몇개의 data만 원한다면 위와 같은 방법으로 받아와 data를 송부할 수도 있습니다.
'트러블슈팅' 카테고리의 다른 글
[chart.js] canvas에 chart 덧씌울 시 이전 chart가 그대로 있는 문제 (0) | 2021.07.15 |
---|---|
[Vue.js]page 시작 시 created, mounted 차이에 따른 화면 문제 (0) | 2021.01.04 |
[Spring]CustomUserDetailsService에서 Service 의존성 주입 (0) | 2020.10.28 |
[Webpack]Dynamic Import시 Script Path 설정 (0) | 2020.08.13 |
T4CConnection Error (0) | 2020.06.05 |
댓글
공지사항