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

JavaScript

ajax๋กœ Post ์š”์ฒญํ•˜๊ธฐ

ajax๋กœ Post ์š”์ฒญํ•˜๊ธฐ

ajax๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์— Post ์š”์ฒญ์„ ํ•ด๋ณด์ž.

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

<div class="container">

<form>
  <div class="form-group">
    <label for="username">UserName:</label>
    <input type="text" class="form-control" placeholder="Enter UserName" id="username">
  </div>
  <div class="form-group">
    <label for="password">Password:</label>
    <input type="password" class="form-control" placeholder="Enter password" id="password">
  </div>
   <div class="form-group">
    <label for="email">Email address:</label>
    <input type="email" class="form-control" placeholder="Enter email" id="email">
  </div>
</form>
  <button id="btn-save" class="btn btn-primary">ํšŒ์›๊ฐ€์ž…</button>

</div>

์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž ์ด๋ฆ„, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€์˜ container๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

์›๋ž˜๋Š” method="post" ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์—๊ฒŒ ํฌ์ŠคํŠธ ์š”์ฒญํ•˜์ง€๋งŒ, ์—ฌ๊ธฐ์„  ajax๋ฅผ ํ™œ์šฉํ•ด์„œ ์š”์ฒญํ•ด๋ณด์ž.

์ปจํ…Œ์ด๋„ˆ ํ•˜๋‹จ์— <script src="js ์ฃผ์†Œ"></script>๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  js ํŒŒ์ผ์„ ๋งŒ๋“ ๋‹ค.

js ํŒŒ์ผ

let index = {
  init: function () {
    $("#btn-save").on("click", () => {
      this.save();
    });
  },
  save: function () {
    let data = {
      username: $("#username").val(),
      password: $("#password").val(),
      email: $("#email").val(),
    };

    $.ajax({
      type: "POST",
      url: "/blog/api/user",
      data: JSON.stringify(data), 
      contentType: "application/json; charset=utf-8",
    }).done(function (response) {
      alert('ํšŒ์›๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.');
      location.href="/blog";
    }).fail(function (error) {
      alert(JSON.stringify(error));
    });
  },
};

index.init();

ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด์ž.

javascript ์†Œ์Šค

let index = ...

js ํŒŒ์ผ ๊ฐ„์˜ ๊ฐ์ฒด ์ด๋ฆ„์˜ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ณดํ†ต ์ด๋ ‡๊ฒŒ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ณ  index.init();์˜ ๋ฐฉ์‹์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

$("#btn-save").on("click", () => {
this.save();
});

arrow function์„ ์จ์„œ this๋ฅผ ๋ฐ”์ธ๋”ฉ ํ–ˆ๋‹ค. ์—ฌ๊ธฐ์„œ์˜ this๋Š” index์ด๋‹ค.

function()์„ ์‚ฌ์šฉํ•ด์„œ save๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, index ์•„๋ž˜์— _this๋ฅผ ์„ ์–ธํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

$.ajax({ ...

ajax๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„๋™๊ธฐ ํ˜ธ์ถœ์ด๋‹ค.

type: "POST",
url: "/blog/api/user",
data: JSON.stringify(data),

์š”์ฒญ ํƒ€์ž…์€ POST, ์š”์ฒญ์„ ํ•˜๋Š” url, http body์— ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค.

contentType: "application/json; charset=utf-8",

body ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค MIMETYPE ์ธ์ง€ ์„ ์–ธํ•œ๋‹ค.

location.href="/blog";

ํšŒ์›๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„  ์ƒˆ๋กœ์šด ํ™”๋ฉด์ด ๋‚˜์™€์•ผ ํ•˜๋ฏ€๋กœ location.href๋ฅผ ์ด์šฉํ•œ๋‹ค.

'JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

var, let, const  (0) 2022.03.12
ES6 ํ•จ์ˆ˜ ๊ธฐ๋Šฅ  (0) 2022.03.11
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž๋ฃŒ๊ตฌ์กฐ  (0) 2022.03.08
SetTimeout๊ณผ ๋น„๋™๊ธฐ  (0) 2022.03.07
ํ˜ธ์ด์ŠคํŒ… (Hoisting)  (0) 2022.03.07