【问题标题】:rails json response not renderedrails json响应未呈现
【发布时间】:2012-11-13 00:15:54
【问题描述】:

控制器应该根据使用 AJAX 通过 POST 请求按下的按钮显示不同的页面

# POST /site_device/1
def show_page
     @site_device = SiteDevice.find(params[:id])
     respond_to do |format|
         format.js
         format.json { STDERR.puts "JSON!"; render 'show_page.js.erb'  }
    end
end

控制器代码#show页面运行,调用json视图模板(下)

<% STDERR.puts "got_here" %>
$('#device-data').html("<h1>Foo!</h1>" ).trigger('create');

我们知道上面的代码正在被调用,因为STDERR 行正在服务器上输出。

在浏览器 (Chrome) 上,我们可以使用控制台来测试视图模板中的代码是否正确运行 - 确实如此:在 Google Chrome 控制台中输入 $('#device-data').html("&lt;h1&gt;Foo!&lt;/h1&gt;" ).trigger('create'); 会导致 html 重新呈现为“Foo !”在正确的地方。

然而,令人困惑的是。正在服务器上执行的代码似乎没有被浏览器接收到,或者如果是,它没有执行,或者没有呈现

还有其他人遇到过类似的问题吗?

【问题讨论】:

  • 你能发布你的ajax函数吗?
  • 当你的意思是 .trigger('create') 那究竟是在做什么。意思是向我们展示您的创建事件处理程序
  • 在网上找到了这个 - 它似乎是一种强制刷新页面的 jquery 方法。没有它,代码在浏览器中运行良好。如果有帮助,我将附加原始问题以删除

标签: ruby-on-rails json


【解决方案1】:

冒险猜测一下,如果您的 ajax 函数有 dataType: 'JSON',它将接收但不执行响应。如果你设置dataType: 'script',响应将会被执行。

如果这不是答案,请发布您的 ajax 函数。

【讨论】:

  • 我不确定您所说的“AJAX 功能”是什么意思。它是什么/我在哪里可以找到它? (我使用 Rails Ch 11.2 的 Agile Dev 作为指南)。
  • 有人如何提出这个 ajax 请求?他们点击什么,和/或提交请求的脚本是什么?
  • &lt;%= button_to device.functionality, show_page_site_device_path(id: device.id), remote: true %&gt;
猜你喜欢
  • 1970-01-01
  • 2011-06-16
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2014-09-06
  • 2021-05-11
  • 1970-01-01
相关资源
最近更新 更多