在jQuery中使用ajax - 不接受url

时间:2015-01-13 15:15:01

标签: javascript jquery ajax

我正在尝试构建一个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请求将是最合理的选择。

1 个答案:

答案 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

参考堆栈问题:How to send a PUT/DELETE request in jQuery?