从JS到rails控制器的AJAX请求的控制台错误

时间:2015-12-18 04:52:05

标签: jquery ruby-on-rails ajax controller

我有一个场景,我必须从JS发送一个AJAX请求来更改数据库列中的布尔值。

Ajax代码

$.ajax({
        type: "POST",
        url: "/action"
    });

控制器代码

def action
  current_user.modal.last.toggle!(:boolean-column-name)
end

它成功更改了表列中的布尔值。但之后我在浏览器CONSOLE中收到错误,如下所示

POST http://URL/action
500 (Internal Server Error)

我是AJAX的新手。我在ajax请求中做错了什么?提前谢谢。

2 个答案:

答案 0 :(得分:0)

500 (internal server error)表示服务器端出现问题。这可能是几件事,但我首先要验证URL和参数是否正确。此外,请确保处理请求的任何内容(您的action方法)都希望将请求作为POST。

编写success回调以查看响应中的内容(ruby方法中的最后一行returns自动在ruby中)并处理成功块中的响应。

答案 1 :(得分:0)

  

500(内部服务器错误)

这是服务器错误。与40x错误相反,500表示您的代码导致some sort of issue on the server

您可以点击浏览器控制台的network标签(以下是Chrome Right-Click -> Inspect Element -> Network -> Preview)来检查您收到的回复(应该显示错误):

enter image description here

最终,您必须记住的是,如果您收到404错误,则表示无法找到资源; 500错误是您的代码的问题。

-

在您的情况下,我会执行以下操作:

#app/assets/javascripts/application.js
...
$.ajax({
   type: "POST",
   url: "/action",
   success: function(data){
      // do something on success
   },
   error: function(jqXHR,error, errorThrown) {
     // do something on error
   }
});

在不知道具体错误的情况下,您将很难解决它。