Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีสร้าง jQuery post() Request

เวลาสร้างเว็บแอป จะต้องสร้างข้อมูลจาก input ของผู้ใช้ เช่น สมัครสมาชิก, บันทึกสูตรอาหาร ต้องใช้ HTTP POST request ส่งข้อมูลจากฟอร์มไป server/API บันทึกลง database

Default form submit ต้อง redirect/refresh หน้า jQuery post() ทำ AJAX request ส่งข้อมูล รับ response จัดการแสดงผล โดยไม่ต้อง refresh!

รายละเอียด post()

HTTP request เหมือนเล่นโยนบอล: Browser โยน request ไป server (API endpoint) Server โยน response กลับ

post() ส่งข้อมูลไป endpoint ที่จะสร้าง/บันทึกใน database รับ arguments สำคัญ 2 ตัว: URL และ data

$.post('/recipes', data);

Response คือ jqXHR object (implements Promise) ใช้ done() จัดรูปแบบ response ให้อ่านง่าย

ตัวอย่างใช้งาน jQuery post()

1. HTML Form

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<h2>New Recipe</h2>
<form id='new-recipe'>
  <label for="name">Recipe Name</label><br>
  <input type="text" name="name" id="name"><br>
  <label for="ingredients">Ingredients</label><br>
  <input type="text" name="ingredients" id="ingredients"><br>
  <button type="submit">Create Recipe</button>
</form>
<div class="recipes"></div>

2. JavaScript: Prevent Default + Serialize + Post

$(document).ready(() => {
  $('#new-recipe').submit((event) => {
    event.preventDefault(); // หยุด redirect/refresh
    var values = $(this).serialize(); // แปลง form data เป็น URL-encoded string
    var posting = $.post('/recipes', values); // ส่ง POST request
    
    posting.done((data) => {
      var recipe = data;
      $('.recipes').text(recipe["name"]);
      $('.recipes').text(recipe["ingredients"]);
    });
  });
});

serialize() แปลง form data เป็น string มาตรฐาน ส่งได้เลย post() คืน jqXHR ใช้ done() รับ response แล้วจัดการแสดงผล

สรุปขั้นตอน

  1. ใช้ .submit() callback บน form
  2. event.preventDefault() หยุด default submit
  3. $(this).serialize() ดึงข้อมูลฟอร์ม
  4. $.post(url, values) ส่ง request
  5. เก็บ jqXHR ไว้ในตัวแปร (เช่น posting)
  6. posting.done() รับ response แล้วแสดงผล

Error เป็นเรื่องปกติ อย่ากลัว debug ดู!