var myForm = document.getElementById('myForm'); myForm.addEventListener('submit', ajaxcall, false); function ajaxcall(event) { event.preventDefault(); var output = document.getElementById('output'); var xhr = new XMLHttpRequest(); // ajax 객체 생성 // 이벤트 설정 xhr.onreadystatechange = function() { if (xhr.readyState === 4) { // 요청완료 if (xhr.status === 200) { // 요청 성공 // text로 전달받아 출력 output.innerHTML = xhr.responseText; } else { // 요청 실패시 처리 output.innerHTML = "전송실패"; } } }; var param = ""; param = addParam(param, "mName", myForm.mName.value); param = addParam(param, "mJob", myForm.mJob.value); // post 방식 | 연결할 url | 비동기 방식으로 오픈 xhr.open("post", "post1.php", true); // 폼전송 방식으로 보낸다. xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // 전송할 문자열을 매개변수로 보낸다. xhr.send(param); // 요청 전송 } // post로 보낼 데이터를 name, value 쌍으로 연결한다. function addParam(param, name, value) { param += (param === "") ? "" : "&"; // 처음 등록시 공백 추가는 &로 연결 param += encodeURIComponent(name) + "=" + encodeURIComponent(value); return param; }
<h3>XMLHttpRequest 객체 POST 연결</h3> <form id="myForm"> <p>이름 : <input type="text" name="mName" placeholder="이름" value="kiyong" required> </p> <p>직업 : <input type="text" name="mJob" placeholder="직업" value="프로그래머" required> </p> <button type="submit">POST방식 데이터 요청하기</button> </form> <hr> <p>전송받은 정보</p> <div id="output"></div>