๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ผ/javascript

์—‘์…€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ๋‹ค๋ฅธ ๋ฒ„ํŠผ ๋™์ž‘ ์ด์ƒ ๋ฌธ์ œ ํ•ด๊ฒฐ

๐Ÿ“Œ ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ ํด๋ฆญ ํ›„ ๋‹ค๋ฅธ ๋ฒ„ํŠผ ๋™์ž‘ ์ด์ƒ ๋ฌธ์ œ ํ•ด๊ฒฐ

๐Ÿงฉ ๋ฌธ์ œ ์ƒํ™ฉ

  • ๋™์ผํ•œ <form id="searchFrm">์„ ์‚ฌ์šฉํ•˜๋Š” ํ™”๋ฉด์—์„œ
    • ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰
    • ์ง€์—ญ ์กฐํšŒ
    • ์—‘์…€ ๋‹ค์šด๋กœ๋“œ
      ์ด 3๊ฐœ์˜ ๋ฒ„ํŠผ ์กด์žฌ
  • ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ ํด๋ฆญ ์ดํ›„
    → ๋‹ค๋ฅธ ์กฐํšŒ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ์—๋„ ์—‘์…€ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ

๐Ÿ” ์›์ธ ๋ถ„์„

  • ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ์‹œ ์•„๋ž˜ ์ฝ”๋“œ๋กœ form.action์„ ๋ณ€๊ฒฝ
form.action = "/welfare/listWelExcavateExcel.do";
form.submit();
  • ๋ฌธ์ œ๋Š”:
    • ํ•œ ๋ฒˆ ๋ณ€๊ฒฝ๋œ form.action์ด ์œ ์ง€๋จ
    • ์ดํ›„ ๋‹ค๋ฅธ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ์—๋„ ๋™์ผํ•œ action์œผ๋กœ submit๋จ

๐Ÿ‘‰ ์ฆ‰, form ์ƒํƒœ ์˜ค์—ผ(side effect) ๋ฐœ์ƒ


๐Ÿ’ก ํ•ด๊ฒฐ ์ „๋žต

โŒ ๊ธฐ์กด ๋ฐฉ์‹ (๋ฌธ์ œ ๋ฐœ์ƒ ๊ตฌ์กฐ)

  • ํ•˜๋‚˜์˜ form์„ ๋ชจ๋“  ๋ฒ„ํŠผ์ด ๊ณต์œ 
  • ํŠน์ • ๋ฒ„ํŠผ์—์„œ form ์†์„ฑ์„ ๋ณ€๊ฒฝ → ์ „์ฒด ๋™์ž‘์— ์˜ํ–ฅ

โœ… ๊ฐœ์„  ๋ฐฉ์‹ (ํ•ต์‹ฌ ์•„์ด๋””์–ด)

์—‘์…€ ๋‹ค์šด๋กœ๋“œ๋งŒ ๋…๋ฆฝ์ ์ธ form์œผ๋กœ ๋ถ„๋ฆฌ (๋™์  ์ƒ์„ฑ)

  • ๊ธฐ์กด form์€ ์œ ์ง€
  • ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ์‹œ์—๋งŒ:
    • ๊ธฐ์กด form ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌ
    • ๋ณ„๋„์˜ form ์ƒ์„ฑ ํ›„ submit

๐Ÿ› ๏ธ ๊ตฌํ˜„ ์ฝ”๋“œ

function listWelExcavateExcel(PageNo, searchCondition, keyword) {
    if (!PageNo || PageNo < 1) PageNo = 1;
    if (!searchCondition) searchCondition = "";
    if (!keyword) keyword = "";
    const sido_cd_id = document.querySelector('input[name=sido_cd_id]').value;
    const sidogun_cd_id = document.querySelector('input[name=sidogun_cd_id]').value;

    // ๊ธฐ์กด form ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ
    const formData = new FormData(document.getElementById("searchFrm"));
    formData.set("page", PageNo);
    formData.set("searchKeyword", keyword);
    formData.set("search_condition", searchCondition);
    formData.set("sido_cd_id", sido_cd_id);
    formData.set("sidogun_cd_id", sidogun_cd_id);

    // ์ž„์‹œ form ์ƒ์„ฑ
    const tempForm = document.createElement("form");
    tempForm.action = "/welfare/listWelExcavateExcel.do";
    tempForm.method = "post";
    tempForm.style.display = "none";

    for (const [name, value] of formData.entries()) {
        const input = document.createElement("input");
        input.type = "hidden";
        input.name = name;
        input.value = value;
        tempForm.appendChild(input);
    }

    document.body.appendChild(tempForm);
    tempForm.submit();
    document.body.removeChild(tempForm);
}
 

โœ… ๊ฒฐ๊ณผ

  • ๊ธฐ์กด ๊ฒ€์ƒ‰/์กฐํšŒ ๋ฒ„ํŠผ ์ •์ƒ ๋™์ž‘ ์œ ์ง€
  • ์—‘์…€ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ๋งŒ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘
  • form ์ƒํƒœ ์˜ค์—ผ ๋ฌธ์ œ ์™„์ „ ํ•ด๊ฒฐ