Cách tải tệp lên máy chủ bằng JavaScript và PHP thuần túy – javascript gửi dữ liệu đến máy chủ

Viết mã để tải hình ảnh lên máy chủ từ đầu có vẻ như là một nhiệm vụ rất khó khăn. Tôi sẽ tạo một biểu mẫu tải lên rất đơn giản để…

Bạn đang xem: javascript gửi dữ liệu đến máy chủ

Viết mã để tải hình ảnh lên máy chủ từ cào có vẻ như là một nhiệm vụ rất khó khăn. Tôi sẽ tạo một biểu mẫu tải lên rất đơn giản để chứng minh cách dữ liệu tệp hoạt động và có thể được chuyển.

Trong hướng dẫn này, chúng tôi sẽ tạo biểu mẫu tải lên bằng HTML , gửi tệp bằng JavaScript , xử lý và tải lên bằng PHP < / strong>.

Lưu ý rằng đây không có nghĩa là mã sản xuất đầy đủ chức năng, an toàn, xác thực,. Nó chỉ đơn giản là để trình bày một cách đơn giản và dễ hiểu về cách tạo biểu mẫu tải lên đầu tiên của bạn.

Điều kiện tiên quyết

  • Kiến thức cơ bản về HTML
  • Kiến thức cơ bản về cú pháp và cấu trúc mã PHP
  • Hiểu biết về các môi trường PHP cục bộ. Nếu bạn không biết điều đó có nghĩa là gì, vui lòng đọc hướng dẫn này về cách thiết lập môi trường MAMP .

Mục tiêu

  • Tạo biểu mẫu đơn giản nhất có thể bằng HTML để lấy các tệp từ máy tính cục bộ của bạn.
  • Gửi dữ liệu từ biểu mẫu HTML sang tập lệnh PHP với JavaScript đơn giản.
  • Xử lý dữ liệu trong tập lệnh PHP và di chuyển các tệp cục bộ vào thư mục tải lên / trên máy chủ.

Thiết lập

Như đã đề cập trong điều kiện tiên quyết, bạn phải có kiến ​​thức cơ bản về PHP và môi trường máy chủ cục bộ.

Nếu bạn đã biết cách sử dụng PHP và môi trường cục bộ, hãy chuyển sang phần tiếp theo.

Nếu đang sử dụng máy Mac, bạn có thể tạo máy chủ bằng một lệnh duy nhất. Để kiểm tra điều này, hãy tạo một tệp có tên test.php trong thư mục bạn chọn. Tôi sẽ tạo một thư mục có tên local . Đường dẫn đầy đủ sẽ là Users / tania / local .

test.php

  

& lt;? php

echo

'Đây chỉ là một bài kiểm tra.'

;

Trong ứng dụng Terminal, tôi sẽ mở ứng dụng này bằng cách nhấn SPACEBAR + COMMAND và nhập Terminal, điều hướng đến thư mục bạn đã tạo tệp của mình.

  

máy chủ cd

  

php -S localhost: 8888

Bây giờ, bạn có thể truy cập http: // localhost: 8888 / test.php và xem đầu ra của mã.

Nếu bạn đang sử dụng Windows hoặc bạn không muốn sử dụng dòng lệnh, hãy thiết lập MAMP .

Tạo Biểu mẫu Tải lên trong HTML

Trong thư mục gốc của máy chủ cục bộ, hãy tạo tệp index.html . Chúng tôi sẽ chỉ tạo một khung nhanh.

  

& lt;!

LOẠI TÀI LIỆU

html

& gt;

& lt;

html

lang

=

"

vi

"

& gt;

& lt;

đầu

& gt; < / p>

& lt;

meta

bộ ký tự

=

"

UTF-8 < p class = "dấu chấm câu"> "

/ & gt;

& lt;

meta

tên

=

"

viewport

"

content

=

"

width = device-width, Initial-scale = 1.0

"

/ & gt; < / p>

& lt;

meta

http -equiv

=

"

X- UA-Tương thích

"

content

=

"

tức là = edge

"

/ & gt;

& lt;

title

& gt; < / p>

Tải tệp lên

& lt; /

title

& gt;

& lt; /

đầu

& gt;

& lt;

body

& gt; < / p>

& lt; /

body

& gt;

& lt; /

html

& gt;

Hãy thêm một biểu mẫu web HTML vào body .

  

& lt; < / p> form

method

=

"

đăng

"

enctype >

=

"

multiart / form-data < p class = "dấu chấm câu"> "

& gt;

& lt;

đầu vào

loại

=

"

tệp

name

=

"

tệp []

"

nhiều

/ & gt;

& lt;

đầu vào

loại

=

"

đệ trình

value

=

"

Tải lên Tệp

"

tên

=

" gửi

"

/ & gt;

& lt; /

biểu mẫu

& gt;

Trong biểu mẫu này, chúng tôi đang sử dụng phương thức HTTP POST , phương thức chúng tôi gửi dữ liệu. Giá trị Multiart / form-data là bắt buộc để tải tệp lên trong các biểu mẫu.

Từ đây, chúng tôi đang tạo kiểu nhập tệp chứa một mảng tệp ( tệp [] ) và chúng tôi đang chỉ định ngôn ngữ nhiều để cho phép nhiều tệp được chọn. tệp [] có thể có bất kỳ tên nào – bạn có thể sử dụng tải lên [] hoặc images [] , nhưng tôi gọi nó là files [] cho đơn giản.

Cuối cùng, chúng tôi có một nút gửi. Vì bước tiếp theo sẽ là thêm một tập lệnh, chúng ta chỉ cần thêm một liên kết đến tệp JavaScript mà chúng ta sẽ tạo.

  

& lt; < / p> script

src

=

"

upload.js

"

& gt;

& lt; /

script p>

& gt;

Và đó là tất cả những gì chúng ta cần để xem.

index.html

  

& lt;!

LOẠI TÀI LIỆU

html

& gt;

& lt;

html

lang

=

"

vi

"

& gt;

& lt;

đầu

& gt; < / p>

& lt;

meta

bộ ký tự

=

"

UTF-8 < p class = "dấu chấm câu"> "

/ & gt;

& lt;

meta

tên

=

"

khung nhìn

content

=

"

width = device-width, initial-scale = 1.0

"

p>

/ & gt;

& lt;

meta

http -equiv

=

"

X- UA-Tương thích

"

content

=

"

tức là = edge

"

/ & gt;

& lt;

title

& gt; < / p>

Tải tệp lên

& lt; /

title

& gt;

& lt; /

đầu

& gt;

& lt;

body

& gt; < / p>

& lt;

form

=

"

bài đăng

enctype

=

"

đa phần / form-data

"

& gt;

& lt;

đầu vào

loại

=

"

tệp

name

=

"

tệp []

"

nhiều

/ & gt;

& lt;

đầu vào

loại

=

"

đệ trình

value

=

"

Tải lên Tệp

"

tên

=

" gửi

"

/ & gt;

& lt; /

biểu mẫu

& gt;

& lt;

script

src

=

"

upload.js

"

& gt;

& lt; / script

& gt;

& lt; /

body

& gt;

& lt; /

html

& gt;

Gửi dữ liệu biểu mẫu qua JavaScript

Ngay bây giờ, việc nhấp vào gửi biểu mẫu sẽ không đi đến đâu cả. Vì chúng tôi không có action dẫn đến URL, biểu mẫu sẽ chỉ đăng lên chính nó theo mặc định. Vì index.html là một tệp html, không phải là một tệp PHP, không có quá trình xử lý biểu mẫu nào có thể xảy ra trên trang này. Thay vào đó, chúng tôi sẽ gửi biểu mẫu tới PHP thông qua JavaScript.

Tạo một tệp có tên upload.js .

Đầu tiên, hãy xác định hai biến – URL nơi chúng tôi muốn gửi dữ liệu và phần tử DOM cho biểu mẫu.

upload.js

 

const

url

=

'process.php'

const

form

=

document

.

querySelector

(

'biểu mẫu'

)

Chúng tôi sẽ thêm trình xử lý sự kiện để theo dõi biểu mẫu được gửi, nhưng chúng tôi sẽ ngăn hành động mặc định kích hoạt.

 
form 

.

addEventListener

(

'gửi'

,

(

e

)

= & gt;

{

e

.

PreventDefault

(

)

}

)

Hãy tập hợp các tệp bằng . files và bắt đầu giao diện FormData () mới.

 
    

const

tệp

=

document

.

querySelector

(

'[type = file]'

)

.

tệp

;

const

formData

=

new

Dữ liệu biểu mẫu

(

)

;

}

)

;

Đối với mỗi tệp đã được gửi, hãy nối tệp đó vào mảng files [] .

 

cho

(

let

i

=

0

;

i

& lt; tệp

.

length

;

i

++

)

{

let

tệp

=

tệp

[

i

]

formData

.

nối thêm

(

'tệp []'

,

tệp

)

}

Cuối cùng, sử dụng API tìm nạp được tích hợp sẵn để ĐĂNG dữ liệu lên URL mà chúng tôi đã chỉ định. In phản hồi ra bảng điều khiển (cho mục đích thử nghiệm).

  

tìm nạp

(

url < p class = "dấu chấm câu">,

{

phương thức

:

'ĐĂNG'

,

body

:

formData

,

}

)

.

sau đó

(

(

phản hồi

)

= & gt;

{

console

.

log

(

response

)

}

)

Đây là toàn bộ upload.js < / strong>.

upload.js

  

const

url

=

< p class = "chuỗi mã thông báo"> 'process.php'

const

form

=

document

.

querySelector

(

'biểu mẫu'

)

p> form

.

addEventListener

(

'gửi'

,

(

e

)

= & gt;

{

e

.

PreventDefault

(

)

const

tệp

=

document

.

querySelector

(

'[type = file]'

) tệp

.

const

formData

=

new

Dữ liệu biểu mẫu

(

)

cho

(

dễ dàng

trong

=

0

;

trong

& lt; > tệp

.

length

;

trong

++

{

let

tệp

=

tệp

[

i

]

formData

.

nối thêm

(

'tệp []'

,

tệp

)

}

tìm nạp

(

url

,

"> {

phương thức

:

'ĐĂNG'

,

body

:

formData

,

}

)

.

sau đó

(

(

phản hồi

)

= & gt;

{

console

.

log

(

response

)

}

)

}

)

Bây giờ – làm cách nào để chúng tôi có thể kiểm tra xem tất cả dữ liệu này là đi qua đúng cách? Hãy in dữ liệu tệp ra.

Tạo một tệp mới có tên process.php và in ra nội dung của mảng superglobal $ _ FILES , mảng này sẽ chứa dữ liệu cho tất cả các tệp của chúng tôi.

process.php

  

& lt;? php

print_r

(

$ _ FILES

">)

;

Khi bạn có tệp này, hãy thử tải lên một vài tệp thông qua hình thức … Tôi đã tạo phplogo.png testfile1.txt để kiểm tra và tải tệp lên

Trong Công cụ dành cho nhà phát triển, bên dưới Bảng điều khiển, bạn sẽ thấy phản hồi như sau:

Công cụ dành cho nhà phát triển – & gt; Bảng điều khiển

  

< / p>

Phản hồi

{

loại:

"basic"

, url:

"http: // localhost: 8888 / process.php"

, đã chuyển hướng: false, trạng thái:

200

, ok: đúng,…

}

Nếu bạn thấy trạng thái: 200 , điều này có nghĩa là tệp nhấn vào URL thích hợp và URL tồn tại.

Bây giờ trong Công cụ dành cho nhà phát triển, hãy nhấp vào tab Mạng. Bạn sẽ thấy tên tệp process.php . Nhấp vào tệp và nhấp vào Phản hồi. Tại đó, bạn sẽ thấy đầu ra của print_r ($ FILES) . Nó sẽ trông giống như thế này:

Công cụ dành cho nhà phát triển – & gt; Mạng – & gt; Phản hồi

  

[

tệp

]

< p class = "token operator"> = & gt;

Mảng

(

[

name

]

= & gt;

Mảng

(

[

0

]

= & gt;

phplogo

.

png

[

1

]

= & gt;

testfile1

.

txt

)

[

loại

]

= & gt;

Mảng

(

[

0

]

= & gt;

image

/

png

[

1

]

= & gt;

text

/

)

[

tmp_name

]

= & gt;

Mảng

(

[

0

]

= & gt;

/

private

/

var

/

xxx

[

1

]

= & gt;

/

private

/

var

/

yyy

)

[

lỗi

]

= & gt;

Mảng

(

[

0

]

= & gt;

0

[

1

]

= & gt;

0

)

[

size

]

= & gt;

Mảng

(

[

0

]

= & gt;

16610

[

1

]

= & gt;

12

)

)

Bây giờ chúng ta biết các tệp thích hợp, cùng với tất cả dữ liệu liên quan của chúng, đã được xử lý. Thành công!

Xử lý dữ liệu biểu mẫu bằng PHP

Bây giờ chúng tôi đang thu thập tất cả các tệp từ biểu mẫu và gửi chúng đến process.php bằng JavaScript, chúng tôi phải di chuyển dữ liệu tệp bằng PHP.

Trước tiên, chúng tôi muốn đảm bảo mã chỉ chạy khi yêu cầu POST truy cập tệp.

process.php

  

& lt;? php

nếu

(

$ _ MÁY CHỦ

[

'REQUEST_METHOD'

]

===

'POST'

)

{

}

Chúng tôi cũng muốn đảm bảo rằng các tệp đã được xử lý.

  

nếu

(

Isset

(

$ _ FILES

[

'tệp'

]

)

)

{

}

Tạo một thư mục trong thư mục gốc của dự án có tên tải lên . Thư mục này cần có quyền 755 để chấp nhận các tệp đến.

Tại thời điểm này, chúng tôi sẽ tạo một mảng tìm lỗi, đặt đường dẫn của thư mục nơi tải lên và đặt các tiện ích mở rộng đã được phê duyệt.

  

$ lỗi

=

< p class = "dấu chấm câu"> [

]

;

$ đường dẫn

=

'uploads /'

;

$ extensions

=

[

'jpg'

,

'jpeg'

< p class = "dấu chấm câu">,

'png'

,

'gif'

]

;

Vì người dùng có thể tải lên nhiều tệp, chúng tôi sẽ tạo một biến $ all_files , lấy số lượng tệp đang được tải lên, và tạo vòng lặp cho .

  

$ all_files

=

< p class = "hàm mã thông báo"> đếm

(

$ _ FILES

[

'tệp'

]

[

'tmp_name'

]

)

;

cho

(

$ i

=

0

;

$ i

& lt;

$ all_files

;

$ i

++

)

{

}

Bây giờ, đối với mỗi tệp, chúng tôi sẽ nhận được tên tệp, dữ liệu tệp tạm thời, loại, kích thước và phần mở rộng. < / p>

  

$ file_name

=

< p class = "biến mã thông báo"> $ _ FILES

[

'tệp'

< p class = "dấu chấm câu">]

[

'name'

]

[

$ i

]

;

$ file_tmp

=

$ _ FILES

[

'files'

]

[

'tmp_name'

]

[

$ i

]

;

$ file_type

=

$ _ FILES

[

'files'

]

[

'loại'

]

[

$ i

]

;

$ file_size

=

$ _ FILES

[

'files'

]

[

'size'

]

[

$ i

]

;

$ file_ext

=

strtolower

(

kết thúc

(

bùng nổ

< p class = "dấu chấm câu"> (

'.'

,

$ _ FILES

[

'tệp'

]

[

'name'

]

[

$ i

]

)

)

)

;

$ file

=

$ đường dẫn

.

$ file_name

;

Bây giờ chúng ta có thể đặt một số quy tắc cho các tệp. Nếu loại tệp không có trong danh sách các tiện ích mở rộng được chấp thuận hoặc tệp quá lớn, chúng tôi sẽ thêm tệp đó vào mảng lỗi. Tôi đặt kích thước tệp là 2 megabyte.

  

nếu

(

!

in_array

(

$ file_ext

,

$ extension

)

)

{

$ error

[

]

=

'Phần mở rộng không được phép:'

.

$ file_name

.

''

.

$ file_type

;

}

nếu

(

$ file_size

& gt;

2097152

)

{

$ error

[

]

=

'Kích thước tệp vượt quá giới hạn:'

.

$ file_name

.

''

.

$ file_type

;

}

Nếu không có lỗi, chúng tôi có thể tiếp tục và di chuyển tệp vào thư mục tải lên bằng lệnh move_uploaded_file .

  

nếu

(

trống

(

$ lỗi

)

)

{

move_uploaded_file

(

$ file_tmp

,

$ file

)

;

}

Bây giờ chúng ta có thể đóng vòng lặp cho và in ra các lỗi. Điều này sẽ hiển thị cho chúng ta trong tab mạng mà chúng ta đã sử dụng trước đây để xem kết quả của $ _ FILES .

  

nếu

(

$ lỗi

)

print_r

(

$ lỗi

)

;

Hãy tổng hợp tất cả lại với nhau và đây là process.php .

process.php

  

& lt;? php

nếu

(

$ _ MÁY CHỦ

[

'REQUEST_METHOD'

]

===

'ĐĂNG'

)

{

if

(

Isset

(

$ _ FILES

[

' tệp '

]

)

)

{

$ lỗi

=

[

]

;

$ đường dẫn

=

'uploads /'

;

$ extensions

=

[

'jpg'

,

'jpeg'

< p class = "dấu chấm câu">,

'png'

,

'gif'

]

;

$ all_files

=

đếm

(

$ _ FILES

[

'tệp'

]

[

' tmp_name '

]

)

;

cho

(

$ i

=

0

;

$ i

& lt;

$ all_files

;

$ i

++

)

{

$ file_name

=

$ _ FILES

[

'files'

]

[

'tên'

]

[

$ i

]

;

$ file_tmp

=

$ _ FILES

[

'files'

]

[

'tmp_name'

]

[

$ i

]

;

$ file_type

=

$ _ FILES

[

'files'

]

[

'loại'

]

[

$ i

]

;

$ file_size

=

$ _ FILES

[

'files'

]

[

'size'

]

[

$ i

]

;

$ file_ext

=

strtolower

(

kết thúc

(

bùng nổ

< p class = "dấu chấm câu"> (

'.'

,

$ _ FILES

[

'tệp'

]

[

'name'

]

[

$ i

]

)

)

)

;

$ file

=

$ đường dẫn

.

$ file_name

;

nếu

(

!

in_array

(

$ file_ext

,

< p class = "biến mã thông báo"> $ extension

)

)

{

$ error

[

]

=

'Phần mở rộng không được phép:'

.

$ file_name

.

''

.

$ file_type

;

}

nếu

(

$ file_size

& gt;

2097152

)

{

$ error

[

]

=

'Kích thước tệp vượt quá giới hạn:'

.

$ file_name

.

''

.

$ file_type

;

}

nếu

(

trống

(

$ lỗi

)

)

< p class = "dấu chấm câu"> {

move_uploaded_file

(

$ file_tmp

,

$ file

)

;

}

}

nếu

(

$ lỗi

)

print_r

(

$ lỗi

)

;

}

}

Bây giờ hãy thử nghiệm nó. Nếu bạn sử dụng biểu mẫu để tải lên một số tệp, bạn sẽ thấy chúng trong thư mục tệp tải lên . Nếu bạn cố gắng tải lên một tệp quá lớn hoặc không đúng loại, bạn sẽ thấy lỗi trong Phản hồi mạng.

Kết luận

Xin chúc mừng, bạn đã tạo thành công một biểu mẫu tải lên đang hoạt động. Đây là một quá trình nhỏ thú vị nếu bạn chưa từng tải lên thành công một tệp hoặc sử dụng superglobal $ _ FILES trước đó.

Nguồn hoàn chỉnh trên GitHub.

Lưu ý rằng đây không phải là một quy trình sản xuất hoàn chỉnh, an toàn. Dưới đây là một số điều cần lưu ý:

  • Không có xác thực phía JavaScript. Người dùng sẽ được hiển thị lỗi trên giao diện người dùng nếu tệp của họ không đúng loại trước khi họ gửi.
  • Xử lý nhiều tệp có cùng tên.
  • Phương pháp xử lý lỗi này chỉ dành cho quá trình phát triển.

Cảm ơn bạn đã đọc. Tôi cũng có thể tạo một tài khoản về việc tải lên Amazon S3 và / hoặc DigitalOcean Spaces nếu có hứng thú.


Xem thêm những thông tin liên quan đến chủ đề javascript gửi dữ liệu đến máy chủ

Server-Sent Events Crash Course

  • Tác giả: Hussein Nasser
  • Ngày đăng: 2020-07-17
  • Đánh giá: 4 ⭐ ( 8166 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Server-Sent Events or SSE is when the server sends events to the client in a unidirectional manner. In this video, I explain Server-Sent Events and compare them to WebSockets and HTTP and Long Polling.

    Slides
    https://payhip.com/b/1Kvk
    (Members get all slides for all my videos for free)

    Source Code
    https://github.com/hnasr/javascript_playground/tree/master/server-sent-events

    Resources
    https://developer.mozilla.org/en-US/docs/Web/API/EventSource

    0:00 Intro
    1:50 HTTP 1.0/1.1
    3:40 WebSockets
    5:00 Server Sent Events
    7:30 SSE Use Cases
    9:00 SSE Code Example
    18:00 SSE Pros & Cons
    25:20 Do You Need SSE?
    28:30 Summary

    Support my work on PayPal
    https://bit.ly/33ENps4

    Become a Member on YouTube
    https://www.youtube.com/channel/UC_ML5xP23TOWKUcc-oAE_Eg/join

    🧑‍🏫 Courses I Teach
    https://husseinnasser.com/courses

    🏭 Backend Engineering Videos in Order
    https://backend.husseinnasser.com

    💾 Database Engineering Videos
    https://www.youtube.com/playlist?list=PLQnljOFTspQXjD0HOzN7P2tgzu7scWpl2

    🎙️Listen to the Backend Engineering Podcast
    https://husseinnasser.com/podcast

    Gears and tools used on the Channel (affiliates)

    🖼️ Slides and Thumbnail Design
    Canva
    https://partner.canva.com/c/2766475/647168/10068

    🎙️ Mic Gear
    Shure SM7B Cardioid Dynamic Microphone
    https://amzn.to/3o1NiBi

    Cloudlifter
    https://amzn.to/2RAeyLo

    XLR cables
    https://amzn.to/3tvMJRu

    Focusrite Audio Interface
    https://amzn.to/3f2vjGY

    📷 Camera Gear
    Canon M50 Mark II
    https://amzn.to/3o2ed0c

    Micro HDMI to HDMI 
    https://amzn.to/3uwCxK3

    Video capture card
    https://amzn.to/3f34pyD

    AC Wall for constant power
    https://amzn.to/3eueoxP

    Stay Awesome,
    Hussein

AJAX là gì? Cách sử dụng Ajax tối ưu nhất cho website – Trung tâm hỗ trợ kỹ thuật

  • Tác giả: wiki.matbao.net
  • Đánh giá: 3 ⭐ ( 6289 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: AJAX là gì? Là chữ viết tắt của Asynchronous JavaScript and XML, AJAX = Asynchronous JavaScript and XML giúp tạo web động mà không cần reload

JavaScript thuần gửi dữ liệu POST mà không cần biểu mẫu

  • Tác giả: qastack.vn
  • Đánh giá: 5 ⭐ ( 9179 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Bạn có thể gửi nó và chèn dữ liệu vào phần thân: var xhr = new…

[jQuery] Bài 3 – Tạo Hiệu Ứng Chuyển Tiếp & Gửi Yêu Cầu Tới Máy Chủ Web

  • Tác giả: viblo.asia
  • Đánh giá: 5 ⭐ ( 1308 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bên cạnh việc hỗ trợ đơn giản hóa các thao tác làm việc với văn bản HTML và các thuộc tính CSS, jQuery còn cung cấp một số các hàm hỗ trợ tạo hiệu ứng cho các thành phần tương tác với người dùng. Tron…

korakora Resources and Information.

  • Tác giả: korakora.org
  • Đánh giá: 4 ⭐ ( 7019 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: korakora.org is your first and best source for all of the information you’re looking for. From general topics to more of what you would expect to find here, korakora.org has it all. We hope you find what you are searching for!

JavaScript lấy dữ liệu người dùng qua tính năng “Đăng nhập bằng Facebook”

  • Tác giả: quantrimang.com
  • Đánh giá: 5 ⭐ ( 7565 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Thư viện JavaScrip của nhiều dịch vụ quảng cáo và phân tích đang lấy dữ liệu người dùng từ các trang web có sử dụng tính năng cho phép đăng nhập bằng Facebook.

Validate Form Bằng Javascript Như Thế Nào?

  • Tác giả: codelearn.io
  • Đánh giá: 3 ⭐ ( 2617 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Các thông tin mà người dùng nhập vào biểu mẫu cần phải được xác thực để đảm bảo sự hợp lý của dữ liệu Vậy làm thế nào để Validate Form với Javascript?

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Cách thêm sass hoặc scss trong React - thêm sass để phản ứng dự án