[英]How to pass HTTP method to window.open
是否可以在window.open
调用中指定HTTP方法(POST,DELETE,PUT)?
我知道我可以改为进行Ajax调用,并且允许指定HTTP方法,但是在这种情况下,我希望浏览器进行“真实”调用(遵循所有重定向,正确的加载响应等)。
我最终使用了隐藏形式来包装HTTP请求。 该方法专用于我的后端(Rails),因为它使用隐藏的_method
输入来发布伪PUT或伪DELETE操作。 对于Rails,我还必须添加隐藏的CSFR字段 。 我的原始HTML如下:
<button class="btn action-button btn-danger"
id="delete-object"
data-action-href="<%= object_path(@object) %>"
data-action-method="delete"><i class="icon-trash icon-white"></i>Delete</button>
实现它的CoffeeScript是:
$("button.action-button").each (index, element) ->
$(element).click (eventObject) ->
url = $(this).data("action-href")
httpMethod = $(this).data("action-method")
if httpMethod?
form = $("<form/>",
id: "action-method-temp-form"
action: url
method: "post"
style: "display: none")
form.appendTo $(this)
csfr = $('meta[name="csrf-token"]').attr("content")
$("<input/>",
type: "hidden"
name: "authenticity_token"
value: "#{csfr}").appendTo form
$("<input/>",
type: "hidden"
name: "_method"
value: httpMethod).appendTo form if httpMethod != "post"
form.submit()
else
window.location = url
我了解这并不是我所要问的,但它做同样的事情。 相比之下,Ajax调用后跟文档内容替换将无法正确处理重定向和非HTML内容类型响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.