2

控制器应该显示不同的页面,具体取决于使用 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) 上,我们可以使用控制台来测试视图模板中的代码是否正确运行——确实如此:进入$('#device-data').html("<h1>Foo!</h1>" ).trigger('create');Google Chrome 控制台会导致 html 被重新渲染为“Foo!” 在正确的地方。

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

有没有其他人有任何类似的问题/问题?

4

1 回答 1

1

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

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

于 2012-11-12T15:27:07.993 回答