코딩 공부/JS
[JS] - 비동기 처리해서 html 요소 추가하기
hg_96
2022. 3. 21. 14:19
먼저 로직을 생각해보자
어떤 버튼을 누르면 조회한 데이터를 html 요소에 담아서 추가한다
좀 더 깊게 생각해보자
버튼을 누르면 ajax 통신으로 데이터 요청을 전송하고 들고오는데 성공하면 데이터를 그려주는 함수에 뿌린다
코드로 보자
1.
$('body').on('click', '#버튼1', function(e) {
ajax요청(ajax데이터요청주소, 요청할함수명);
});
클릭했을때 ajax 통신을 요청한다
2.
function ajax요청(데이터요청주소, 보낼함수명) {
$.ajax({
type: "POST",
url: 데이터요청주소,
data: "",
dataType: "json",
success: function (result) {
보낼함수명(result);
}
, complete: function () {
loadingEnd();
}
, error: function (xhr, status, error) {
alert("error : " + error);
}
});
}
성공시에 성공한 값들을 함수명에 보낸다
데이터 요청 주소는 컨트롤러/함수?get을 사용해서 주소를 던지고 컨트롤러 내부에서 조회한 데이터를
json_encode 함수로 인코드 해서 리턴한다
3.
function 보낼함수명(result) {
var htmlTag = "";
let base_url = result['base_url'];
$.each(result['데이터배열'], function (key, value) {
htmlTag += `<태그 생성>${value['키값']}</태그 생성>`;
htmlTag += `<태그 생성>${value['키값']}</태그 생성>`;
});
$('#추가할위치').append(htmlTag);
$('#버튼1').attr("data-url", result['다음리스트URL']);
$('#버튼1').attr('disabled', false);
}
each문을 돌면서 htmlTag에 배열의 길이만큼 반복해서 담고 append를 통해서 html에 추가한다