2010-07-31 35 views
26

Tôi đang cố gắng tìm ra lý do tại sao các phương pháp đưa/xóa, trong trang web hỗ trợ HTML5, không hoạt động với Chrome. Từ những gì tôi đã tìm kiếm, có vẻ như nó đã được làm việc một thời gian với Chrome, vì vậy với điều đó nói rằng tôi chỉ tìm kiếm một vài gợi ý để thu hẹp vấn đề của tôi. Có lẽ tôi đang thực hiện các hình thức sai, có lẽ doctype của tôi là sai, những người hiểu biết. Any help is appreciated :)Phương pháp PUT/DELET HTML5 không hoạt động trong Chrome?

Vì vậy, các mã trông như thế này:

<!DOCTYPE html> 
<html> 

<head> 
     <title> 
      some_resource 
     </title> 
    </head> 
    <body> 
    <div class="content"> 
    <form method="put" action="/some_resource"> 
    <div> 
    <input id="title" name="title" placeholder="The Resource Title" type="text" value="" autofocus /> 
    </div> 
    <div> 
    <textarea id="body" name="body" placeholder="The Resource Body" required></textarea> 
    </div> 
    <div> 
    <input id="submit" name="submit" type="submit" value="Submit" /> 
    </div> 
    <!-- Resource Settings --> 
    <ul> 
    <li> 
    <input id="listed" name="listed" type="checkbox" value="y" /> 
    </li> 
    <li> 
    <input id="template" name="template" type="text" value="resource.html" /> 
    </li> 
    </ul> 
    </form> 
    </div> 
    </body> 
</html> 

Chỉ cần một thử nghiệm cơ bản cho một biểu mẫu. Bây giờ tôi đã thử nó trên mới nhất của Ubuntu Firefox (3.6.7), Opera (10.60 Internal), và Linux Chrome Beta mới nhất từ ​​Google (5.0.375.99 beta). Không ai trong số họ dường như gửi phương thức đặt thích hợp cho máy chủ, khi tôi gửi biểu mẫu. Bây giờ, tôi tin (không phải từ bất kỳ nghiên cứu cụ thể nào) mà Firefox vẫn chưa hỗ trợ điều này, và giống như rất nhiều HTML5, nó được lên kế hoạch cho phiên bản tiếp theo của FF. Opera tôi không biết về, nhưng tôi thường nghe về nó giữ tốc độ với Chrome. Vì vậy, .. yea, tôi là một chút bối rối.

Khi gửi biểu mẫu, họ truy cập url: http://localhost:8080/some_resource?title=t&body=b&submit=Submit&template=resource.html. Lưu ý rằng, như dự kiến, POST hoạt động tốt.

Bây giờ, có ai có bất kỳ gợi ý nào để phương pháp đặt hoạt động không? Có thể là bản beta cho Linux đơn giản là không được cập nhật cho phiên bản Windows (một cái gì đó tôi giả định, là những gì mọi người nói về khi tôi thấy PUT làm việc cho Chrome), nhưng tôi thực sự hy vọng nó là một vấn đề với việc triển khai của tôi.

Máy chủ có hỗ trợ PUT/DELETE không? (Tôi đang sử dụng AppEngine Dev Server hiện tại). Tôi không biết .. hy vọng ai đó có một số ý tưởng :)

Nhờ bất kỳ trả lời, Lee

Lưu ý: tính năng HTML5 khác tôi đã thử nghiệm cho đến nay đang làm việc. Ví dụ, trong hình thức đó bạn có thể thấy tự động lấy nét và các thuộc tính bắt buộc. Những người đang làm việc như dự định trong Chrome.

Chỉnh sửa1: Chỉ cần làm rõ, tôi hiểu hỗ trợ cho những điều này là sơ sài. Như tôi đã trả lời một câu trả lời trước đó, tôi không quan tâm đến sự hỗ trợ hiện tại trong các trình duyệt khác. Hiện tại Chrome là những gì tôi muốn làm việc, và tôi hy vọng Firefox sẽ làm việc trong bản phát hành sắp tới (tôi không biết, tôi chỉ nghe họ đẩy HTML5 rất nhiều), và tôi không có ý tưởng về Opera.

Tất cả điều này chỉ đơn giản là để thử nghiệm và tìm hiểu thế giới tuyệt vời mới của HTML5 (Web Workers, localStorage, vv) và CSS3. Tôi chỉ quan tâm đến các trình duyệt cạnh chảy máu, phù hợp với công nghệ xuất huyết cạnh nhau :)

+4

'PUT' và' DELETE' không liên quan gì đến HTML5; chúng được định nghĩa trong đặc tả HTTP/1.1. Hỗ trợ phải có mặt trên cả hai máy khách (để gửi) và máy chủ (để xử lý) bên. – You

+0

Yea và cách sử dụng, như được cho phép là HTML5, là điều tôi rất vui mừng. Câu hỏi là .. tại sao nó không hoạt động: /. Địa ngục, một số người nói rằng một tấn các thuộc tính hiện đang được hỗ trợ, nhưng tôi thậm chí không thể có được PUT/DELETE làm việc. Argh –

+0

Có một dự thảo để có được những động từ được hỗ trợ chính thức. Tôi không có đầu mối về lý do tại sao nó mất quá lâu, như PUT/DELETE đã là một phần của HTTP cho các lứa tuổi. Xem http://amundsen.com/examples/put-delete-forms/ để biết thêm thông tin. Cho đến khi bản nháp đó được chấp nhận, các trình duyệt đơn giản sẽ không gửi bất cứ điều gì khác ngoài GET và POST. –

Trả lời

23

PUT và DELETE là phương pháp không còn được hỗ trợ cho các <form> nhãn. Xem HTML5 differences from HTML4 (19 tháng 10 năm 2010)

+4

Cảm ơn những người đứng đầu lên .. Bất kỳ ý tưởng làm thế nào thích hợp REST là nghĩa vụ phải được thực hiện sau đó? –

+8

Hỗ trợ PUT và DELETE đã bị xóa khỏi thông số HTML5 về việc thêm chúng làm giá trị cho thuộc tính "phương thức" của

, ví dụ: . Nhưng PUT và DELETE rất sống động và cũng như một phần của HTTP 1.1 spec, có nghĩa là một máy chủ vẫn có thể lắng nghe chúng (đối với các cuộc gọi REST), và tôi tin rằng vẫn có thể có trình duyệt để gửi PUT và DELETE qua Ajax (xem http://stackoverflow.com/questions/165779/ là-the-put-delete-head-etc-phương pháp-có sẵn trong hầu hết các trình duyệt web) –

3

Không có “HTML5” làm tiêu chuẩn nguyên khối.

Một số giống với HTML4. Một số trong đó là phê chuẩn các tính năng kỹ thuật phi tiêu chuẩn mà mọi trình duyệt thực hiện và mọi người đều sử dụng trong nhiều năm. Một số tiện ích mở rộng mới mà các nhà cung cấp trình duyệt chủ yếu đồng ý và đang trong các giai đoạn triển khai khác nhau. Chẳng hạn như, ví dụ: autofocus.

Nhưng sau đó một số nội dung được triển khai trước khi được chuẩn hóa và một số tính năng thưởng ngẫu nhiên mà một số người ngẫu nhiên ở WHATWG nghĩ là đẹp, nhưng không có dấu hiệu nào hỗ trợ tác giả trình duyệt.

Có ít danh mục thứ hai này hơn so với trước đây (bản nháp WHATWG sớm gần như đầy đủ về kiến ​​trúc thiên văn học-hư cấu như XHTML 2.0), nhưng vẫn còn một số và hiện tại, các kiểu gửi biểu mẫu mở rộng (PUT/Phương thức DELETE và một số hành động không phải HTTP) nằm trong danh mục đó. Mỗi trình duyệt hiện bỏ qua method="put", thay vào đó, hãy quay lại giá trị mặc định là get.

Có thể một trình duyệt trong một ngày sẽ thực hiện việc này. Hoặc có thể nó sẽ bị loại khỏi spec. HTML5 vẫn còn là một chặng đường dài từ kết thúc. Hiện tại, chỉ cần sử dụng POST như mọi người khác. Nó không hoàn toàn thuần khiết yên tĩnh, nhưng sau đó điều đó không thực sự giúp bạn có được điều gì đặc biệt.

<input ... autofocus /> 

Sử dụng cú pháp HTML hoặc XHTML, nhưng không trộn chúng. autofocus="autofocus" cho XHTML5 hoặc HTML5 mất tự đóng /.

<input id="submit" name="submit" type="submit" value="Submit" /> 

Tránh đặt tên tốt nhất để tránh đụng độ với phương pháp form.submit(). Bạn không cần name trên nút gửi trừ khi bạn cần kiểm tra nhấp chuột vào một nút cụ thể. (Và bạn không cần phải thêm id s cho tất cả các lĩnh vực của bạn, hoặc. Trừ khi bạn cần một id cho <label for hoặc nhắm mục tiêu kịch bản, bạn có thể để chúng ra.)

+0

Vậy chính xác điều này nói về Chrome hỗ trợ PUT/DELETE là gì? Để đặt nó thẳng thừng, tôi đang sử dụng chúng trên các dự án cá nhân và để tìm hiểu các tính năng HTML5 mới (công nhân web, vv), vì vậy tôi không quan tâm nếu tôi để các trình duyệt khác trong bụi. Tôi đã hoàn toàn mong đợi Chrome làm việc, Firefox không hoạt động chút nào (cho đến khi nó cập nhật, mang lại nhiều hỗ trợ HTML5 hơn), và .. ai biết về Opera. IE ofcourse, sẽ yêu cầu Chrome Frame. Tôi chỉ muốn các phương thức hoạt động như dự định .. tại sao cuộc trò chuyện về Chrome hỗ trợ PUT/DELETE? Có phải tôi chỉ hiểu lầm họ không? –

+0

Theo như đóng (/>) và đặt tên (gửi) đi, đó là từ một thư viện trình tạo biểu mẫu (WTForms của Python) và tôi vẫn chưa thấy cách thay đổi các thẻ đóng. Theo như đặt tên của nút gửi, điều đó có thể dễ dàng thay đổi. Một lần nữa, đây chỉ là một thử nghiệm để có được PUT làm việc. Mọi thứ khác không quan trọng :) –

+0

Tôi không nghe nói như vậy, nhưng tôi nghi ngờ rằng, như @ Bạn đề cập, nó có thể liên quan đến 'XMLHttpRequest', cho phép gửi các phương thức này ngoại trừ trên một số trình duyệt cũ hơn. – bobince

Các vấn đề liên quan