【问题标题】:Ajax call not received by rails controllerrails 控制器未收到 Ajax 调用
【发布时间】: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

【问题讨论】:

    标签: javascript jquery ruby-on-rails json ajax


    【解决方案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 就无关紧要了。

    【讨论】:

      猜你喜欢
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多