我使用AJAX调用Rails控制器,拉取记录,然后将该记录返回到AJAX调用。我的AJAX请求如下(我正在使用CoffeScript):
jQuery ->
$.ajax
type: 'GET',
url: '/reports',
dataType: 'script',
success: (response) ->
console.log response
return
error: (response) ->
console.log response
return
我的控制器如下:
class ReportsController < ApplicationController
def report
@test_result = TestResult.first
respond_to do |format|
format.js { render json: @test_result.to_json }
format.html
end
end
end
现在,我可以在AJAX中访问该对象,但是通过错误函数(error: (response) ->
)而不是AJAX方法的成功函数(success: (response)->
)。为什么响应不会成功,即使xhr调用的状态是200还是ok?我想不明白。
答案 0 :(得分:2)
您需要使用dataType: 'json'
进行AJAX调用,并使用状态代码返回format.json
来自控制器的AJAX响应。
jQuery ->
$.ajax
type: 'GET',
dataType: 'json',
url: '/reports',
dataType: 'script',
success: (response) ->
console.log response
return
error: (response) ->
console.log response
return
控制器
def report
@test_result = TestResult.first
respond_to do |format|
format.json { render json: @test_result.to_json, status: :success }
format.html
end
end
答案 1 :(得分:1)
您在ajax配置中的网址应为'/reports/report'
,因为Ajax中的网址为'/controller/action'
并尝试使用dataType: 'json'
,因为这是您从服务器进行的操作。
答案 2 :(得分:0)
我制定了自己的解决方案。希望对您有所帮助。
===控制器
def show
@type = Type.find(params[:id])
respond_to do |format|
format.json { render json: @type.to_json, status: 200 }
format.html
end
end
===咖啡文件
type_changed = (id) ->
$.ajax
type: 'GET'
, url: "/types/#{id}"
success: (data) ->
console.log('Success')
console.log(data)
return
error: (data) ->
console.log('Error')
console.log(data)
return