HTML5 PUT / DELETE方法在Chrome中不起作用?

时间:2010-07-31 16:18:38

标签: html5 http google-chrome

我想弄清楚为什么启用HTML5的网站中的put / delete方法无法与Chrome一起使用。从我搜索到的内容来看,它听起来像Chrome已经有一段时间了,所以说我只是想找几个指针来缩小我的问题范围。也许我正在实施错误的形式,也许我的doctype是错误的,谁知道。任何帮助表示赞赏:)

所以,代码看起来像这样:

<!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内部)以及Google最新的Linux Chrome Beta(5.0.375.99 beta)上尝试过。当我提交表单时,他们似乎都没有向服务器发送正确的put方法。现在,我相信(不是来自任何特定的研究)Firefox尚未支持这一点,并且像许多HTML5一样,它计划用于下一版本的FF。 Opera我不知道,但我经常听说它与Chrome保持同步。所以..是的,我有点困惑。

提交表单时,会转到网址:http://localhost:8080/some_resource?title=t&body=b&submit=Submit&template=resource.html。请注意,正如预期的那样,POST工作正常。

现在有没有人有任何指针让put方法有效?有可能Linux的beta版本还没有更新到Windows的版本(我认为是人们在看到PUT为Chrome工作时所讨论的内容),但我我真的希望这是我实施的一个问题。

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

感谢任何回复, 利

注意:到目前为止我测试的其他HTML5功能正在运行。例如,在该表单中,您可以看到自动对焦和所需属性。这些在Chrome中按预期工作。

编辑1:为了澄清,我理解对这些的支持是粗略的。正如我之前回答的那样,我并不关心其他浏览器目前的支持。目前Chrome是我想要的工作,我希望Firefox能够在即将发布的版本中工作(我不知道,我只是听到他们推动HTML5很多),而且我不知道Opera。

所有这些只是为了测试和学习HTML5(Web Workers,localStorage等)和CSS3的新奇妙世界。我只关心最前沿的浏览器,它们与前沿技术相匹配:)

2 个答案:

答案 0 :(得分:24)

<form>标记不再支持PUT和DELETE方法。看到 HTML5 differences from HTML4(2010年10月19日)

答案 1 :(得分:3)

没有“HTML5”作为单一标准。

其中一些与HTML4相同。其中一些批准了每个浏览器实现的技术非标准功能,并且每个人都使用了多年。其中一些新的扩展是浏览器供应商最常同意并处于不同的实施阶段。例如,像autofocus

但是其中一些是在标准化之前可能会发生变化的随意实现的东西,以及其中一些随机奖励功能,WHATWG的一些随机人员认为这样很好,但没有显示出浏览器支持的迹象作者。

后者的类别比以前少了(早期的WHATWG草案几乎与XHTML 2.0一样充满了建筑师天文学的不良),但仍有一些,目前还有扩展的表单提交类型(PUT / DELETE)方法和一些非HTTP操作)属于该类别。每个浏览器当前都会忽略method="put",而是返回默认的attr值get

也许有一天浏览器会实现这一点。或者也许它会从规范中删除。 HTML5距离完成还有很长的路要走。目前,只需像其他人一样使用POST。它并不是非常纯粹的RESTfulness,但那并不能让你有什么特别之处。

<input ... autofocus /> 

使用HTML或XHTML语法,但不要混用它们。 XHTML5的autofocus="autofocus"或HTML5的/会失去自我关闭<input id="submit" name="submit" type="submit" value="Submit" />

form.submit()

最好避免命名一个按钮,以避免与name方法发生冲突。您不需要在提交按钮上id,除非您需要检查是否有点击某个特定按钮。 (并且您无需在所有字段中添加id。除非您需要<label for {{1}}或脚本定位,否则您可以将其删除。)