response.data
는 서버에서 클라이언트로 응답 보낼 때 전달하는 데이터를 참조
서버에서 JsonResponse(context)
를 반환하고 있음
이는 클라이언트 측에서 AJAX 요청의 결과로 받은 JSON 데이터를 의미
context
라는 이름의 변수를 사용하여 데이터를 정의하고 있지만 클라이언트 측에서 받을 때는 response.data
를 사용하여 참조dataset
이란?
btn.dataset.commentId = response.data.dog_pk
btn
이라는 버튼 요소에 commentid
라는 사용자 정의 데이터 속성을 추가하고, 서버에서 받은 response.data.dog_pk 값을 저장url:
/${event.target.dataset.articleId}/dog/comments/`const div =document.getElementById(e.target.dataset.commentId)
에서 getElementById
는 왜 사용하나요?
${event.target.dataset.articleId}
이 있는데, html에는 data-article-id
으로 작성되어있습니다. 다른 단어 같은데, 왜 같은 의미로 사용되나요?좋아요
를 추가할때 is_bookmarked = True
로 True가 대문자인데, context.data.isbookmarked === true
여기서는 true가 소문자입니다. 왜그런것일까요? document.querySelector('.choice').addEventListener('click', function(event) {
const chosenId = event.target.id;
const pk = document.getElementById(chosenId).dataset.value;
const letter = document.getElementById(chosenId).dataset.letter;
const mbti = document.getElementById(chosenId).dataset.mbti;
const progressBar = document.querySelector('.progress-bar');
progressBar.style.width = (100 / 12) * (pk + 1) + '%';
axios.post('/nextpage/', {
pk: pk,
letter: letter,
mbti: mbti
})
.then(response => {
const data = response.data;
progressBar.style.width = (100 / 12) * (data.question_pk + 1) + '%';
document.getElementById('question-progress').innerText = data.question_pk;
document.getElementById('question').innerText = data.question;
const choice1 = document.getElementById('choice1');
choice1.innerText = data.question_ans1;
choice1.dataset.value = data.question_pk;
choice1.dataset.letter = data.question_letter1;
choice1.dataset.mbti = data.mbti;
const choice2 = document.getElementById('choice2');
choice2.innerText = data.question_ans2;
choice2.dataset.value = data.question_pk;
choice2.dataset.letter = data.question_letter2;
choice2.dataset.mbti = data.mbti;
})
.catch(error => {
console.log('finished');
document.querySelector('div.main').style.display = 'none';
document.querySelector('div.loader').style.display = 'block';
mbti += letter;
setTimeout(() => {
window.location.href = `/result/${mbti}`;
}, 3500);
});
});
var latlng = JSON.parse("{{ latlngjson|escapejs }}")
코드는 서버에서 전달한 json형식의 문자열을 웹페이지의 자스에서 처리하기 위해 사용하는 코드{{ latlngjson|escapejs }}
이 부분은 장고 템플릿에서 사용되는 구문으로, latlngjson 변수의 값을 JavaScript에서 안전하게 사용할 수 있는 형태로 변환