2010-07-31 80 views
26

我想弄清楚爲什麼HTML5啓用的網站中的put/delete方法不適用於Chrome。從我搜索的內容來看,這聽起來像是Chrome已經工作了一段時間了,所以說我只是尋找一些指針來縮小我的問題。也許我正在實施錯誤的形式,或許我的文檔類型錯了,誰知道。任何幫助表示讚賞:)HTML5 PUT/DELETE方法在Chrome中不起作用?

所以,代碼如下:

<!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> 

只是一個形式,一個基本的測試。現在我已經在最新的Ubuntu Firefox(3.6.7),Opera(10.60內部版)以及谷歌最新的Linux Chrome Beta(5.0.375.99測試版)上嘗試過它。當我提交表單時,他們似乎都沒有將正確的put方法發送到服務器。現在,我相信(不是來自任何具體的研究)Firefox尚未支持這一點,並且像很多HTML5一樣,它計劃在下一版FF中使用。歌劇我不知道,但我經常聽說與Chrome保持同步。所以..是啊,我有點困惑。

提交表單時,他們轉到網址:http://localhost:8080/some_resource?title=t&body=b&submit=Submit&template=resource.html。請注意,正如預期的那樣,POST工作得很好。

現在有沒有人有任何指針讓put方法工作?這可能是測試版的Linux只是沒有更新到Windows品種(東西我假設,是人們談論當我看到PUT工作的Chrome),但我真的希望它是我執行的問題。

服務器是否必須支持PUT/DELETE? (目前我正在使用AppEngine Dev Server)。我不知道..希望有人有一些想法:)

感謝任何答覆, 李

注:其它HTML5功能我測試過的迄今爲止的工作。例如,在這種形式下,您可以看到自動對焦和所需的屬性。這些在Chrome中按照預期工作。

編輯1:只是爲了澄清,我明白對這些的支持是粗略的。正如我早些時候回答的答案,我不關心其他瀏覽器的當前支持。目前Chrome是我想要工作的,我希望Firefox能夠在即將發佈的版本中工作(我不知道,我只聽到他們推着HTML5很多),我不知道Opera。

所有這些都只是爲了測試和學習HTML5(Web Workers,localStorage等)和CSS3的新奇妙世界。我只關心流血的邊緣瀏覽器,它們與流血的邊緣技術相匹配:)

+4

'PUT'和'DELETE'與HTML5無關;它們在HTTP/1.1規範中定義。客戶端(發送)和服務器(處理)端都必須提供支持。 – You 2010-07-31 16:50:59

+0

是的,並且允許使用HTML5,這讓我非常興奮。問題是......爲什麼它不工作:/。地獄,有人說目前支持大量的屬性,但我似乎甚至不能得到PUT/DELETE的工作。 Argh – 2010-07-31 22:52:26

+0

有一份草案可以正式獲得這些動詞的支持。我不知道爲什麼花了這麼長時間,因爲PUT/DELETE已經成爲HTTP的一部分。有關更多信息,請參閱http://amundsen.com/examples/put-delete-forms/。在接受草稿之前,瀏覽器根本不會發送除GET和POST之外的其他內容。 – 2011-08-17 21:35:09

回答

23

PUT和DELETE都爲<form>不再支持的方法標籤。請參閱 HTML5 differences from HTML4(2010年10月19日)

+4

感謝您的領導.. 任何想法如何正確REST應該實現呢? – 2010-10-30 07:02:36

+8

PUT和DELETE支持已從HTML5規範中刪除,將它們作爲值添加到

的「方法」屬性中,例如。 。但是PUT和DELETE非常活躍,並且是HTTP 1的一部分。1規範,這意味着服務器仍然可以監聽它們(對於REST調用),我相信仍然有可能讓瀏覽器通過Ajax發送PUT和DELETE(請參閱http://stackoverflow.com/questions/165779/是最投入 - 刪除 - 頭等等的方法可用功能於大多數的Web的瀏覽器) – 2010-11-01 11:59:36

3

作爲一個單一的標準,沒有「HTML5」。

其中一些與HTML4相同。其中一些是批准每個瀏覽器實現並且每個人都使用多年的技術非標準功能。它的一些新的擴展是瀏覽器供應商大多同意並處於不同的實施階段。例如,autofocus

但是其中一些是在標準化之前很可能會改變的東西,而且它的一些隨機附加功能讓WHATWG認爲一些隨機的人會很好,但是沒有顯示任何支持的跡象瀏覽器作者。(早期的WHATWG草案几乎與XHTML 2.0一樣充滿建築師天文學的壞處),但仍然有一些(目前是擴展格式提交類型)(PUT/DELETE方法和一些非HTTP操作)屬於該類別。每個瀏覽器目前都會忽略method="put",而是回落到默認的attr值get

也許有一天瀏覽器會實現這一點。或者也許它會從規格中刪除。 HTML5離完成還有很長的路要走。現在,像其他人一樣使用POST。這不是很純粹的RESTfulness,但那並沒有真正讓你有什麼特別之處。

<input ... autofocus /> 

使用HTML或XHTML語法,但不要混合它們。針對XHTML5或HTML5的autofocus="autofocus"失去自我關閉/

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

最佳避免命名一個按鈕,以避免與form.submit()方法衝突。您無需在提交按鈕上輸入name,除非您需要檢查某個特定按鈕的點擊。 (你不需要id s添加到您的所有領域無論是。除非你需要爲<label for或腳本目標的id,你可以離開他們。)

+0

那麼究竟是什麼關於支持PUT/DELETE的Chrome的所有討論呢?說穿了,我正在使用這些個人項目,並學習新的HTML5功能(網絡工作人員等),所以我不在乎,如果我離開其他瀏覽器灰塵。我完全期待Chrome能夠工作,Firefox根本不工作(直到它更新,這會帶來更多的HTML5支持),以及......誰知道Opera。 IE的課程,將需要Chrome Frame。 我只是想讓這些方法按照預期工作。爲什麼談論支持PUT/DELETE的Chrome?我只是誤解了他們嗎? – 2010-07-31 22:05:48

+0

至於關閉(/>)和命名(提交)去,這是從一個表單生成器庫(Python的WTForms),我還沒有看到如何改變結束標籤。就提交按鈕的命名而言,這很容易改變。再次,這只是一個讓PUT工作的測試。其他一切都沒有關係:) – 2010-07-31 22:08:16

+0

我自己並沒有聽到這樣的言論,但我會懷疑,正如@你提到的那樣,它可能與'XMLHttpRequest'有關,它允許發送這些方法,除了一些舊版本的瀏覽器。 – bobince 2010-08-01 12:34:10

相關問題