2

在关于路由的书中(http://www.yesodweb.com/book/routing-and-handlers)有一段:

每个请求方法的单独处理程序将相同,加上请求方法列表。请求方法必须全部为大写字母。例如,/person/#String PersonR GET POST DELETE。在这种情况下,您需要定义三个处理函数 getPersonR、postPersonR 和 deletePersonR。

执行类似的东西

curl -X 删除本地主机:3000/person/1

有效,因此服务器能够处理这些请求。

几个示例(如https://github.com/snoyberg/haskellers/blob/master/routeshttp://pbrisbin.com/posts/posts_database)使用 GET 或 POST 请求(而不是 DELETE)来处理此问题。

有没有一种直接的方法可以从 Yesod-code 调用 DELETE 请求?所以路由处理程序deletePersonR被调用?

4

1 回答 1

2

与可以使用页面上的普通链接或表单访问的GETand方法不同,方法需要使用 JavaScript,并且并非所有浏览器都支持。这就是为什么经常被使用的原因。要从 JavaScript 调用方法,最简单的方法是使用 JavaScript 框架,例如jQueryPOSTDELETEPOSTDELETE

$.ajax({
  url: "/person/1",
  type: "DELETE",
  success: function(html){
    alert("Ok, deleted");
  }
});
于 2011-11-07T21:24:37.077 回答