- vừa được xem lúc

Một số ví dụ sử dụng Ajax

0 0 54

Người đăng: Truong Thi Nhi

Theo Viblo Asia

1. Định nghĩa về ajax

AJAX viết tắt từ Asynchronous JavaScript and XML (JavaScript và XML không đồng bộ).

  • Theo như các trang thống kê (Google Suggest) thì AJAX là một kiểu lập trình trở nên phổ biến vào năm 2005.

  • AJAX không phải là một ngôn ngữ lập trình mới mà là một cách thức mới sử dụng những chuẩn đã có.

  • AJAX dựa chính trên request JavaScript và HTML ngoài ra XML và CSS cũng là các chuẩn tạo nên AJAX

  • AJAX thân thiện với người dùng

Nói ngắn gọn, nếu bạn muốn không phải đợi mòn mỏi để load được đống dữ liệu trên trang web mà thay vào đó phần cần thiết được load lại siêu nhanh không cần load lại cả trang nặng nề kia. Cái này dựa trên nguyên lý cắt nhỏ dữ liệu của ajax

1.1 Hình dung về sử dụng Ajax

Chúng ta tạo một biểu mẫu đơn giản như bên dưới. Trường username sẽ được điền bởi người dùng và trường time sẽ được điền bằng cách sử dụng AJAX kiểu như này

<html>
<body>
<form name="myFirstDemo">
Họ và tên: <input type="text" name="username" />
Thời gian hiện tại: <input type="text" name="time" />
</form>
</body>
</html> 

Đấy kiểu vậy, sau đây thì mình có thêm một vài ví dụ về sử dụng Ajax

1.2 Tạo một ứng dụng Ajax đơn giản

Khi bạn click vào button View more sau 3 giây sẽ hiển thị một đoạn text lên. Ở đây các bạn có thể thực hiện việc ajax này bằng javascript thuần (sử dụng các phương thức trong lớp XMLHttpRequest) hoặc sử dụng thư viện jQuery cái mà cũng được viết bằng js. Trong ví dụ này thì thực hiện nó thông qua jQuery. Nếu bạn muốn tìm hểu thêm cách thực hiện bằng js thuần thì xem thêm ở đây https://stackoverflow.com/questions/9713058/send-post-data-using-xmlhttprequest

Đầu tiên chúng ta include thư viện jQuery, gọi như thế này là mặc định nó sẽ include version mới nhất.

<script type="text/javascript" src="https://code.jquery.com/jquery-latest.pack.js"></script>

Thêm đoạn này vào body:

<div id="demo-ajax">
</div>
<button id="btn">View more</button>

Thẻ div đầu tiên chúng ta để hiển thị kết quả trang php trả về, button thứ 2 là nút để bạn click

Và bây giờ đến đoạn quan trọng, bạn cho đoan script này vào bên trong thẻ head (trước thẻ body)

<script> $(document).ready(function () { jQuery("#btn").click(function(){ var data_test = 'This is first demo'; $.ajax({ url: 'controller.php', type: 'POST', data: 'string=' + data_test, success: function (data) { setTimeout(function(){ $('#demo-ajax').html(data); }, 3000); }, error: function (e) { console.log(e.message); } }); }); }); </script>

Ở đây chúng ta cần đảm bảo rằng trang của chúng ta đã load hết nên chúng ta đặt code bên trong hàm này

$(document).ready(function () {});

Sau đó chúng ta sẽ tạo một event click chuột vào button view more, vậy khi button view more được click thì chúng ta sẽ xử lý cái gì?

Khai báo 1 biến có nội dung là “This is first demo”

Sử dụng hàm ajax để gửi biến ấy sang cho file php xử lý, trong hàm này cần các tham số như:

url: tức là nơi sẽ xử lý dữ liệu.

type: chính là phương thức đẩy dữ liệu đi (POST hoặc GET)

data: dữ liệu nào sẽ được đẩy sang, ở đây chúng ta đấy biến data_test sang và cần gán nó vào 1 tham số string để sang bên php chúng ta có thể lấy giá trị string bằng cách $_POST[‘string’] nếu type là post còn $_GET[‘string’] với type là get.

Hàm success sẽ thực hiện khi chúng ta thực hiện thành công. Ở đây nếu thành công chúng ta hẹn giờ 3s để nó set content cho thẻ có id là #demo-ajax

Hàm error sẽ thực hiện khi công việc thất bại. ở đây chúng ta đơn giản chỉ console.log ra thôi, cái này bạn phải nhấn F12 mới thấy được.

Đây là code đầy đủ trang html

<html>
<head><title>Basic Ajax Demo</title> <script type="text/javascript" src="https://code.jquery.com/jquery-latest.pack.js"></script> <script> $(document).ready(function () { jQuery("#btn").click(function(){ var data_test = 'This is first demo'; $.ajax({ url: 'controller.php', type: 'POST', data: 'string=' + data_test, success: function (data) { setTimeout(function(){ $('#demo-ajax').html(data); },3000); }, error: function (e) { console.log(e.message); } }); }); }); </script>
</head>
<body>
<div id="demo-ajax"></div>
<button id="btn">View more</button>
</body>
</html>

=> Xử lý php

Quan trọng không kém là file controller.php, file này có nhiệm vụ mã hóa sang dạng json và hiển thị (giống như return đối với hàm) nó ra để cho bên hàm success hoặc error của ajax dễ xử lý:

<?php
echo json_encode($_POST['string']);

1.3 Ví dụ về sử dụng jQuery Ajax và php để gửi dữ liệu trong form Login

Trước tiên chúng ta sẽ tạo 1 form login như sau:

<form method="post" id="form-login"> <input type="text" name="username" id="username" placeholder="Tên đăng nhập" /> <input type="text" name="password" id="password" placeholder="Mật khẩu" /> <button id="btn-login" type="submit">Login</button>
</form>

Tiếp theo chúng ta sẽ sử dụng thư viện jquery mới nhất chèn vào website

<script src="http://code.jquery.com/jquery-1.12.0.min.js"></script>

Tiếp đến xây dựng code jQuery ajax để thực hiện kiểm tra dữ liệu trong form và gửi dữ liệu trong form lên server

<script type="text/javascript">
$(document).ready(function()
{ var submit = $("button[type='submit']"); // bắt sự kiện click vào nút Login submit.click(function() { var username = $("input[name='username']").val(); var password = $("input[name='password']").val(); // Kiểm tra đã nhập tên tài khoản chưa if (username == '') { alert('Vui lòng nhập tài khoản'); return false; } // Kiểm tra đã nhập mật khẩu chưa if (password == '') { alert('Vui lòng nhập mật khẩu'); return false; } // Lấy tất cả dữ liệu trong form login var data = $('form#form-login').serialize(); // Sử dụng $.ajax() $.ajax({ type : 'POST', //kiểu post url : 'submit.php', //gửi dữ liệu sang trang submit.php data : data, success : function(data) { if (data == 'false') { alert('Sai tên đăng nhập hoặc mật khẩu'); } else { $('#content').html(data); } } }); return false; });
});
</script>

Cuối cùng xây dựng file submit.php để xử lý dữ liệu

<?php
if ($_POST)
{ $username = trim($_POST['username']); $password = trim($_POST['password']); //neu dang nhap dung, fake data if ($username == 'tendangnhap' && $password == 'matkhau') {
?>
<p>Đăng nhập thành công</p>
<h1>Xin chào: <?php echo $username ?></h1>
<?php } else {
?> <p>Tên đăng nhập hoặc mật khẩu sai rồi</p>
<?php }
}
?>

2. Mặt hạn chế khi sử dụng Ajax

Ngoài những mặt tối ưu như phần trên đã nêu thì Ajax cũng có một vài hạn chế:

  • Không thể bookmark nó vào favourite trên trình duyệt hay gửi link đến cho bạn bè, vì tất cả quá trình nó thực hiện ngầm và không hiển thị trên address
  • Không thể hiện thị nội dung trên các trang tìm kiếm vì các trang tìm kiếm hiện nay vẫn chưa hỗ trợ tìm vì rất khó tìm và gần như không thể tìm đc.
  • Không thể sử dụng nút back vì back cũng là chính nó
  • Với một số trình duyệt, do nhu cầu bảo mật, sẽ tắt chức năng thực hiện javascript nên ajax không thể chạy, hay trong một vài host, không hỗ trợ vào sâu cấu hình server nên hay bị lỗi “Access denied”

Nhưng với những điểm hạn chế nói trên thì AJAX vẫn đang được các lập trình viên sử dụng rộng rãi và đang nghiên cứu để cải thiện nó, ví dụ như vừa update thông tin trên web, vừa thay đổi trên thanh address để có thể sử đung một số chức năng liên quan tới địa chỉ tuyệt đối này.

Bài viết này được tham khảo từ một vài nguồn, cụ thể là từ các trang:

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 525

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 397

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 738

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 358

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 450

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 433