我正在尝试构建一个ajax请求,最终允许用户通过单击每个项旁边的按钮对列表进行排序。这是我到目前为止所做的:
upLinks.on('click', function(e) {
var link;
e.preventDefault();
link = $(this)[0];
console.log(link.pathname);
$.ajax({
type: 'PUT',
url: link.pathname
});
return false;
});
正如预期的那样, console.log(link.pathname)
将/projects/11/project_items/104/sort
注销到控制台。但是,ajax请求会返回错误:
PUT http://localhost:3000/projects/11 400 (Bad Request)
查看服务器日志,实际上由于某种原因,它会转到/projects/11
,而不是/projects/11/project_items/104/sort
。根据jQuery文档,在这种情况下,/projects/11
将是ajax的默认参数,因为这是当前页面的路由。这让我相信它完全忽略了url参数。
如果我将HTTP方法类型更改为GET
,则ajax将按预期运行。是否有某些原因/projects/11/project_items/104/sort
不是PUT
请求的可接受网址?我认为,因为我正在更新数据(使用新位置),PUT
请求将是最合理的选择。
答案 0 :(得分:3)
请注意,如果您正在使用IIS网络服务器并且jquery PUT或DELETE请求返回404错误,则需要在IIS中启用这些谓词。我发现这是一个很好的资源:http://geekswithblogs.net/michelotti/archive/2011/05/28/resolve-404-in-iis-express-for-put-and-delete-verbs.aspx
"要求的类型(" POST"或" GET"),默认为" GET"。注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持它们。"来自:http://api.jquery.com/jQuery.ajax/#options