/** * ============================================================================= * menu2_1.html - 제작 및 무료 진단 신청서 (#btn_sendmail) * ----------------------------------------------------------------------------- * #btn_sendmail 버튼을 누르면 입력 내용을 모아 ajax/api_mail.php 로 발송합니다. * (menu1_1.js / menu1_2.js / menu1_3.js 와 동일한 방식) * ============================================================================= */ $(document).ready(function () { 'use strict'; // ========================= // Config & Selectors // ========================= const API_BASE_URL = `${typeof hostURL !== 'undefined' ? hostURL : ''}/ajax/api.php`; const API_MAIL_URL = `${typeof hostURL !== 'undefined' ? hostURL : ''}/ajax/api_mail.php`; const API_CONTENT_URL = `${typeof hostURL !== 'undefined' ? hostURL : ''}/ajax/api_content.php`; const MAIL_TO = 'itfor21@naver.com'; // 문의 메일 수신 주소 (필요 시 변경) const SUBJECT_PREFIX = '[MyPR123:유지관리]'; const $form = $('#btn_sendmail').closest('form'); const $btn = $('#btn_sendmail'); const $btnHtml = $btn.html(); let sending = false; // 중복 발송 방지 if (!$form.length) { return; } // ========================= // Event Binding // ========================= $btn.on('click', onSubmitForm); $form.on('submit', onSubmitForm); // Enter 입력 대비(중복 발송은 sending 플래그로 차단) // ========================= // Handlers // ========================= function onSubmitForm(e) { e.preventDefault(); // 실제 전송은 ajax 로 처리 if (sending) { return; } const data = collectData(); if (!data.name) { return alert('담당자 성함 / 회사명을 입력해 주세요.'); } if (!data.phone) { return alert('연락처를 입력해 주세요.'); } if (!data.service) { return alert('서비스를 선택해 주세요.'); } setLoading(true); $.ajax({ url: API_MAIL_URL, type: 'POST', dataType: 'json', data: { to: MAIL_TO, subject: `${SUBJECT_PREFIX} ${data.name} ${data.service} ${data.phone}`.substring(0, 200), message: buildMessage(data), html: false } }).done(function (res) { if (res && res.success) { alert('신청이 정상적으로 접수되었습니다.\n무료 SEO 분석 리포트와 함께 회신드리겠습니다.'); $form[0].reset(); } else { alert((res && res.message) ? res.message : '메일 발송에 실패했습니다.'); } }).fail(function (xhr) { const res = xhr.responseJSON; alert((res && res.message) ? res.message : '메일 발송 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.'); }).always(function () { setLoading(false); }); } // ========================= // Helpers // ========================= function collectData() { return { name: $.trim($('#qa_name').val() || ''), phone: $.trim($('#qa_phone').val() || ''), service: $.trim($('#qa_service').val() || ''), siteUrl: $.trim($('#qa_url').val() || ''), etc: $.trim($('#qa_etc').val() || '') }; } function buildMessage(data) { return [ '■ 구분 : 유지관리', '', `■ 담당자 / 회사명 : ${data.name}`, `■ 연락처 : ${data.phone}`, `■ 서비스 : ${data.service || '-'}`, `■ 현재 운영 사이트 URL : ${data.siteUrl || '-'}`, '', '■ 노출 희망 타깃 키워드 / 제작 요구사항', data.etc || '(내용 없음)', '', '─────────────────────────────', `접수일시 : ${new Date().toLocaleString('ko-KR')}` ].join('\n'); } function setLoading(loading) { sending = loading; $btn.prop('disabled', loading); $btn.html(loading ? ' 발송 중...' : $btnHtml); } });