2013-03-05 169 views
1

我试图通过AJAX在简单的按钮上单击发出POST请求。Rails:Dojo POST请求正在作为GET请求接收

在DOM,我有一个按钮:

<button id="MyButton">Click Me!</button> 

我的JavaScript问题的一个片段的POST请求:

require(["dojo/on", "dojo/dom", "dojo/request"], 
    function(on, dom, request) { 
     on(dom.byId("MyButton"), "click", function(event) { 
      request.post("/post_here").then(
       function(response) { alert(response); }, 
       function(error) { alert(error); } 
      ); 
     }); 
    } 

而且我也有以下途径和控制器动作:

post 'post_here' => "controller#action" 

而控制器动作

def action 
    Rails.logger.debug "Hello!" 
    render nothing: true 
end 

当我点击该按钮发出请求后,我得到一个错误信息:

No route matches [GET] "/post_here" 

谁能帮帮忙?

+0

这个问题似乎是使用JavaScript。我仍然可以使用表单向该网址提交发布请求。我想知道HTTP头是否与此有关。 – 2013-03-05 06:25:00

+0

我看到有一个名为“request_method = GET”的cookie在我往返于服务器的所有流量中。这是问题吗?如果是这样,我似乎无法弄清楚如何从我的cookies中删除request_method = GET。 – 2013-03-05 23:30:01

回答

0

这个工作对我来说:

require(["dojo/on", "dojo/dom", "dojo/request"], 
function(on, dom, request) { 
    on(dom.byId("MyButton"), "click", function(event) { 
     request("/post_here", {'method': 'POST' }).then(
      function(response) { alert(response); }, 
      function(error) { alert(error); } 
     ); 
    }); 
}