rails 控制器未收到 Ajax 调用

Posted

技术标签:

【中文标题】rails 控制器未收到 Ajax 调用【英文标题】:Ajax call not received by rails controller 【发布时间】:2018-08-29 15:08:10 【问题描述】:

我通过 jQuery 调用的 Ajax 将始终被传输(状态 200),但只是有时它会被 rails 控制器接收。表示数据已正确发送,但大多数情况下控制器会发回一个空的 json 对象作为响应。我需要超时,否则 stringify 不起作用。有什么提示吗?

setTimeout(function() 
      $.ajax(
        type: "POST",
        url: "homepage/routes",
        data: 
          routes_my: JSON.stringify(routes)
        ,
        success: function(data) 
          console.log(data);
        
      );
    , 100);
  

#Controller
      def routes
        @routes = JSON.parse(params\[:routes_my\], object_class: OpenStruct)
        render :json => @routes
      end

console log working example

console log bad example

【问题讨论】:

【参考方案1】:

试试这个功能。

$(document).ready(function()
    var obj = JSON.stringify(routes);
    $.ajax(
            type: "POST",
            url: "homepage/routes",
            data: routes_my: obj,
            success: function(data) 
              console.log(data);
            
          );
);

【讨论】:

然后我从控制器得到“没有将 nil 隐式转换为字符串” 我已经更新了我的代码,你能检查一下它是否有效吗? @charly1212 然后我得到一个带有空表的对象 "table": 作为来自控制器的响应:/【参考方案2】:

实际上问题在于“路由”是异步函数的结果,有时仅部分可用。通过将 Ajax 作为回调函数调用来解决此问题。那么 setTimeout 就无关紧要了。

【讨论】:

以上是关于rails 控制器未收到 Ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章

Rails.ajax 数据未传递给控制器

Ajax 请求未调用 Spring Boot 控制器

在rails中对控制器操作进行ajax调用

rails ajax 调用是不是应该捆绑到它们自己的单独控制器中?

外部模块中的 Rails Resque 未定义方法错误

Rails“ajax:成功”多次调用