调用控制器方法并在客户端上获取数据
Call controller method and get data back on client
我想调用一个返回字符串的服务器端控制器方法,该方法最终将是 JSON,然后一旦我将数据返回到客户端上,我就可以将其注入到视图的一部分供用户查看。
这是我当前的设置:
控制器:
class HomeController < ApplicationController
def index
end
def show
end
def name
name = "Sean"
respond_to do |format|
format.html
format.json {render json: name }
end
end
end
路线:
resources :home do
collection do
get 'name'
end
end
AJAX 调用:
window.callAPI = () ->
$.ajax
type: "GET"
url: "/home/name"
success: (data) ->
console.log data
error: (error) ->
console.log error
我收到以下错误:
Started GET "/home/name" for 127.0.0.1 at 2015-01-22 13:28:59 -0700
Processing by HomeController#name as */*
Completed 500 Internal Server Error in 9ms
ActionView::MissingTemplate (Missing template home/name, application/name with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :coffee, :jbuilder]}. Searched in:
* "/home/sylanz/Documents/NimbusCC/app/views"
):
app/controllers/home_controller.rb:10:in `name'
你应该调用/home/name.json
- 正如错误所说,否则Rails不知道你想要一个JSON响应,并选择HTML作为默认响应。而且您没有 HTML 模板。
实际上,如果此操作是纯粹的 API 终结点,则完全省略 format.html
子句。
你的 Ajax 调用应该是(注意包含的dataType
选项):
$.ajax
type: "GET"
url: "/home/name"
dataType: "json" #Added
success: (data) ->
console.log data
jQuery中有一个getJSON
快捷方式。在这种情况下,它是ajax
的直接替代品,其中包含您在请求中缺少的部分,如其他人所记录的那样:dataType: "json"
.
你怎么会想通的?在日志中注意:
:formats=>[:html]
相关文章:
- Ajax-如何获取数据
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 从数据库中获取数据并插入JavaScript变量
- 从单击的行上的列中获取数据
- Solr查询以按日期月份获取数据&年
- React路由器服务器端渲染和ajax获取数据
- 使用JavaScript在IE9中获取数据列表选项
- 从json子数组获取数据
- 使用angularjs中的rest调用通过id获取数据
- 正在从ruby应用程序中的数据库中获取数据
- 如何从servlet获取数据到ajax成功
- 从选择下拉菜单中获取数据
- 异步获取数据使用JavaScript同步获取数据
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 如何在Angular.js中循环动态添加Fields并获取数据并将其发送到服务器
- JavaScript-获取数据属性的值返回未定义的值
- 如何从文本区域获取数据并使用javascript进行解密
- 在put方法之前从作用域获取数据
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么