我有一个React应用程序,它将POST请求发送到带有Axios库的Rails控制器,该代码如下所示:
axios.post(update_url,{
bunch_of_data: data
}, {headers: {
'Content-Type': 'application/json'
}})
.then(res => {
const response_data = res.data;
console.log(response_data);
});
控制器看起来像:
class MyController < ApplicationController
skip_before_action :ensure_logged_in
skip_before_action :authenticate_admin_user
skip_before_action :verify_authenticity_token
def update_feed
respond_to do |format|
format.js { render layout: false }
end
end
end
对于来自Rails应用程序内jQuery的AJAX请求,我通常不需要对路由做任何事情,但在这种情况下,如果我没有这个默认值,我会以HTML格式获取请求:
post '/update_feed' => 'mycontroller#update_feed', as: :update_feed, defaults: { format: 'js' }
我的Rails日志最终看起来像:
Started POST "/update_feed" for 127.0.0.1 at 2018-03-26 15:21:23 -0700
Processing by MyController#update_feed as JS
{"format"=>"js", "controller"=>"my_controller", "action"=>"update_feed"}
Rendering /update_feed.js.erb
Rendered /update_feed.js.erb (0.4ms)
Completed 200 OK in 2433ms (Views: 9.0ms | ActiveRecord: 74.1ms)
它说它呈现了js.erb文件,但Rails端没有任何反应。但是,我确实看到我的js.erb文件中的alert("!")
从React应用程序内部的响应中打印出来(所以我在浏览器控制台中看到alert("!")
)。但为什么不执行?