繁体   English   中英

如何将HTTP方法传递给window.open

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM