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 调用的主要内容,如果未能解决你的问题,请参考以下文章