Một postback là gì?


142

Tôi đang tìm cách phát triển web và đã thấy từ postback được ném xung quanh. Đến từ một nền tảng không dựa trên web, một nhà phát triển web mới phải biết gì về postback? (tức là chúng là gì và khi nào chúng phát sinh?)

Bất kỳ thông tin nào bạn muốn chia sẻ để giúp một người mới trong thế giới web nhận thức được các bài đăng lại sẽ được đánh giá cao nhất.

Câu trả lời:


178

Sau đây là nhằm vào người mới bắt đầu ...

Khi nào nó xảy ra?

Một postback bắt nguồn từ trình duyệt của khách hàng. Thông thường, một trong những điều khiển trên trang sẽ được người dùng thao tác (một nút được nhấp hoặc thả xuống đã thay đổi, v.v.) và điều khiển này sẽ bắt đầu một bài đăng lại. Trạng thái của điều khiển này, cộng với tất cả các điều khiển khác trên trang, (được gọi là Trạng thái xem) được đăng lại cho máy chủ web.

Chuyện gì xảy ra

Thông thường nhất là postback làm cho máy chủ web tạo một thể hiện của mã phía sau lớp của trang đã khởi tạo postback. Đối tượng trang này sau đó được thực thi trong vòng đời trang bình thường với một chút khác biệt (xem bên dưới). Nếu bạn không chuyển hướng người dùng cụ thể đến một trang khác ở đâu đó trong vòng đời của trang, kết quả cuối cùng của bài đăng sẽ là cùng một trang được hiển thị lại cho người dùng, và sau đó một bài đăng khác có thể xảy ra, v.v.

Tại sao nó xảy ra?

Ứng dụng web đang chạy trên máy chủ web. Để xử lý phản hồi của người dùng, khiến trạng thái ứng dụng thay đổi hoặc chuyển sang một trang khác, bạn cần lấy một số mã để thực thi trên máy chủ web. Cách duy nhất để đạt được điều này là thu thập tất cả thông tin mà người dùng hiện đang làm việc và gửi lại tất cả cho máy chủ.

Một số điều cho người mới bắt đầu cần lưu ý là ...

  • Trạng thái của các điều khiển trên trang đăng lại có sẵn trong ngữ cảnh. Điều này sẽ cho phép bạn thao tác điều khiển trang hoặc chuyển hướng đến một trang khác dựa trên thông tin ở đó.
  • Các điều khiển trên biểu mẫu web có các sự kiện và do đó, các trình xử lý sự kiện, giống như bất kỳ điều khiển nào khác. Phần khởi tạo của vòng đời trang sẽ thực thi trước khi xử lý sự kiện của điều khiển gây ra bài đăng trở lại. Do đó, mã trong trình xử lý sự kiện Khởi đầu và Tải của trang sẽ thực thi trước mã trong trình xử lý sự kiện cho nút mà người dùng đã nhấp.
  • Giá trị của thuộc tính Trang Page.IsPostBack, sẽ được đặt thành ăn đúng sự thật khi trang đang thực thi sau khi gửi lại và ngược lại, sai.
  • Các công nghệ như Ajax và MVC đã thay đổi cách thức hoạt động của postback.

2
Hiệu chỉnh nhỏ - "Trạng thái của điều khiển này, cộng với tất cả các điều khiển khác trên trang, (được gọi là Trạng thái xem) được đăng lại." Dữ liệu này thực sự là dữ liệu Postback. Dữ liệu viewstate cũng được đăng lại nhưng đó là trạng thái của các điều khiển lần cuối cùng chúng ở trên máy chủ.
Simon Giữ

Lưu ý postback được sử dụng trên tất cả các nền tảng .NET, không chỉ ASP.NET
JNF

1
"Để xử lý phản hồi của người dùng, khiến trạng thái ứng dụng thay đổi hoặc chuyển sang một trang khác, bạn cần lấy một số mã để thực thi trên máy chủ web." Đây là một chút sai lệch. Bạn không phải lúc nào cũng cần 'mã để thực thi trên máy chủ web' để thực hiện những việc này. Khi có thể, có thể tốt hơn để xử lý đầu vào của người dùng trên máy khách. Một trong những điều quan trọng nhất cần biết về hậu kỳ là làm thế nào / khi nào không thực hiện chúng; tức là khi nào cần chăm sóc những thứ phía khách hàng, hoặc thông qua Ajax, v.v.
Hawkeye Parker

1
Đồng ý @HawkeyeParker. Tôi đã viết lại điều này khi tất cả những gì tôi biết là kiến ​​trúc Web Forms. Mọi thứ chắc chắn đã đi một chặng đường dài kể từ đó! Tất cả lời giải thích của tôi chắc chắn không bao gồm Ajax và tính đến tất cả.
Andy McClADE

27

Từ wikipedia :

Postback là một hành động được thực hiện bởi một trang web tương tác, khi toàn bộ trang và nội dung của nó được gửi đến máy chủ để xử lý một số thông tin và sau đó, máy chủ sẽ đăng cùng một trang trở lại trình duyệt.


@Gal Giang: Bạn không nghĩ rằng nó sẽ chỉ xảy ra khi một số lỗi xác thực xảy ra để hiển thị cùng một trang với kết quả.
Shirgill Farhan

21

Postback xảy ra khi một trang web đăng dữ liệu của nó trở lại cùng một tập lệnh / dll / bất cứ điều gì đã tạo ra trang ở vị trí đầu tiên.

Ví dụ trong C # (asp.net)

...

if (!IsPostback)
   // generate form
else
   process submitted data;

20

Mở rộng dựa trên các định nghĩa được đưa ra, điều quan trọng nhất mà bạn cần biết với tư cách là một nhà phát triển web là KHÔNG CÓ NHÀ NƯỚC NÀO giữa các postback. Có nhiều cách để giữ lại trạng thái, chẳng hạn như các bộ sưu tập Phiên hoặc Chế độ xem trong ASP.NET, nhưng theo quy tắc, hãy viết các chương trình của bạn để bạn có thể tạo lại trạng thái của mình trên mỗi bài đăng.

Đây có lẽ là sự khác biệt lớn nhất giữa lập trình ứng dụng trên máy tính để bàn và web, và tôi đã mất nhiều tháng để học đến mức mà tôi đã viết theo cách này theo bản năng.


2
cũng đặt. không có gì được lưu ngoại trừ trong phiên và viewstate
Miles

1
Điểm tuyệt vời! Vâng, điều này chắc chắn giống như một cái gì đó cần một chút để bọc bộ não của một người, khi đến từ miền lập trình máy khách.
Scott Saad

10

Phát triển web thường liên quan đến các trang html chứa các biểu mẫu ( <form>thẻ). Hình thức đăng lên URL. Bạn có thể đặt một biểu mẫu nhất định để đăng lên bất kỳ url nào bạn muốn. Một postback là khi một hình thức gửi trở lại trang / url của chính nó.

Thuật ngữ này có ý nghĩa đặc biệt đối với các nhà phát triển ASP.Net , bởi vì đây là cơ chế chính điều khiển nhiều hành vi cho một trang - cụ thể là 'xử lý sự kiện'. Các trang ASP.Net có chính xác một hình thức máy chủ gần như luôn đăng lại chính nó và những bài đăng này hỗ trợ thực thi kích hoạt trên máy chủ của một thứ gọi là Vòng đời Trang.


6

Thuật ngữ này cũng được sử dụng trong phát triển ứng dụng web khi tương tác với API dịch vụ web của bên thứ 3

Nhiều API yêu cầu cả tích hợp tương tác và không tương tác. Thông thường, phần tương tác được thực hiện bằng cách sử dụng chuyển hướng (trang 1 chuyển hướng người dùng đến trang 2, nơi họ đăng nhập và được chuyển hướng trở lại). Phần không tương tác được thực hiện bằng cách sử dụng 'postback' hoặc HTTP POST từ máy chủ của trang 2 đến máy chủ của trang 1.


5

Khi một tập lệnh tạo một biểu mẫu html và hành động của http đó sẽ trở lại cùng một biểu mẫu.


4

Gửi lại về cơ bản là khi một biểu mẫu được gửi đến cùng một trang hoặc tập lệnh (.php .asp, v.v.) như bạn hiện đang xử lý dữ liệu thay vì gửi bạn đến một trang mới.

Một ví dụ có thể là một trang trên một diễn đàn (viewpage.php), nơi bạn gửi bình luận và nó được gửi đến cùng một trang (viewpage.php) và sau đó bạn sẽ thấy nó với nội dung mới được thêm vào.

Xem: http://en.wikipedia.org/wiki/Postback


3

Một bài đăng trở lại là bất cứ điều gì khiến trang từ trình duyệt web của khách hàng bị đẩy trở lại máy chủ.

Có rất nhiều thông tin ngoài kia, tìm kiếm google cho các bài đăng.

Hầu hết thời gian, bất kỳ điều khiển ASP nào cũng sẽ khiến bài đăng trở lại (nhấp vào nút / liên kết) nhưng một số thì không trừ khi bạn bảo họ (hộp kiểm / hộp tổ hợp)


3

Postback đề cập đến các hình thức HTML. Một biểu mẫu HTML có 2 phương thức: GET và POST. Các phương thức này xác định cách dữ liệu được gửi từ máy khách thông qua biểu mẫu đến máy chủ. Postback là hành động POST trở lại trang gửi. Về bản chất, nó tạo thành một mạch hoàn chỉnh từ máy khách, đến máy chủ và quay lại.


2

Tuy nhiên, câu hỏi được trả lời chính xác ở trên, nhưng chỉ muốn chia sẻ kiến ​​thức của tôi. Postback về cơ bản là một tài sản mà chúng ta có thể sử dụng trong khi thực hiện một số tác vụ cần chúng ta quản lý trạng thái của trang, nghĩa là chúng ta đã thực hiện một số sự kiện, ví dụ như nhấp chuột vào nút hoặc nếu chúng ta đã làm mới trang của mình. Khi trang của chúng tôi tải lần đầu tiên, đó là nếu chúng tôi đã làm mới trang của mình, tại thời điểm đó, thuộc tính postback là sai và sau đó nó trở thành đúng.

if(!ispostback)
{
 // do some task here
}
else
{
 //do another task here
}

http://happycodng.blogspot.in/2013/09/concept-of-postback-in.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.