Ajax 调用未从 ActiveRecord 返回最新数据

Posted

技术标签:

【中文标题】Ajax 调用未从 ActiveRecord 返回最新数据【英文标题】:Ajax call not returning latest data from ActiveRecord 【发布时间】:2021-09-23 01:17:18 【问题描述】:

我的 ajax 调用无法从 Active Record 返回有关应用程序最新版本的最新信息时遇到问题。我在单击链接时运行 ajax 调用以运行控制器方法来更新包含指向外部下载处理程序的链接的类变量,但它似乎返回了前一个。当我刷新页面时,它会返回最新的页面,但有点违背了 ajax 调用的目的。

这里是 .html.erb 方法

$('.download-link').on('click', function(event) 
            var id = this.id;
            $.ajax(
                url: "/updater",
                type: "GET",
                success: function (result) 
                    window.location.href = "<%= @version.download_link %>"
                
            )
        )

这里是路由到 /updater 的控制器方法:

def update
  @version = AppVersion.find_by(app_type: "AppType", is_active: true)
end

如何确保它从 Active Record 获取最新版本数据而无需重新加载页面?

【问题讨论】:

【参考方案1】:

当生成.js.erb(其中包含ajax获取最新下载链接)时,Rails服务器渲染会使用当前变量来填充那些占位符,比如"&lt;%= @version.download_link %&gt;",这样之前的版本(这里是@version)将使用并修复 ajax 代码:window.location.href = current-download-link,这就是为什么它总是返回前一个。

您需要更新以使用result - ajax 调用的成功响应数据,类似这样

success: function (result) 
  window.location.href = result.download_link

【讨论】:

以上是关于Ajax 调用未从 ActiveRecord 返回最新数据的主要内容,如果未能解决你的问题,请参考以下文章

Ajax / PHP:调用正常,但未从 PHP 发出警报结果

控制器 ActionResult 方法参数未从 ajax 调用接收表单数据

JqxCombo 值未从 ajax 结果设置 - Vue.js

用户数据未从查询调用返回任何内容

C# Web Api 调用未从 jquery 调用

API Gateway v2 未从 OPTIONS 调用返回 CORS 标头