Rails Ajax,成功回调数据未定义

时间:2014-06-17 18:23:47

标签: jquery ruby-on-rails ajax jquery-callback

所以我对Rails相当新。

Heres是我的问题:

我的coffeescript中有一个Ajax调用到租户模型,编辑页面。

$("#tenant_tenantbuildinginfo").change ->
    $.ajax
        url: "/buildings/getgst",
        dataType: "json",
        data: 'buildinginfo' : $(this).val(),
        success: (data) ->
            console.log data
            $("#tenant_gst").val data
        error: (data) ->
            console.log 'error'
    return false

因此,这个ajax调用的想法是从楼宇控制器中的方法返回一个税率,如“5.6”(完美地运作)......

   def getgst
     d { 'gets fired' }
     s = Building.get_gst_for_building(params[:buildinginfo])
     d { s.to_s('F') }
     @var = s.to_s('F')

     respond_to do |format|
       format.json { render json: @var }
     end

   end

d {}行是记录器,这就是我知道函数被调用并返回正确值的原因。 很好,到目前为止,Ajax调用工作正常。但是,现在我的问题是在success函数中解析或呈现返回值。

success: (data) ->
console.log data
$("#tenant_gst").val data

这部分AJAX调用在我的控制台中返回“undefined”,这真的很奇怪,因为在我的控制器操作中我将@var渲染为json而ajax调用需要json。

感谢任何帮助,非常感谢!

1 个答案:

答案 0 :(得分:1)

undefined表示数据变量未定义。首先,json格式要求你以key:value格式返回答案,所以你应该选择例如:

控制器响应中的

format.json { render json: { "gst": @var } }

你正在使用错误的coffeescript,因为成功和错误的方法被传递给数据变量,你可以试试&在这里查看它如何解析为JS:http://js2coffee.org/

你可能意味着什么

$("#tenant_tenantbuildinginfo").change ->
    $.ajax
        url: "/buildings/getgst",
        dataType: "json",
        data: 'buildinginfo' : $(this).val()
        success: (data) ->
            console.log data
            $("#tenant_gst").val data
        error: (data) ->
            console.log 'error'
    return false

(注意行$("#tenant_gst").val data末尾没有逗号)

其次,在jQuery调用中引用error / success responses时,我宁愿尝试方法链。:

$("#tenant_tenantbuildinginfo").change ->
  $.ajax(
    url: "/buildings/getgst"
    dataType: "json"
    data:
      buildinginfo: $(this).val()
  ).success( (data) ->
      console.log data
      $("#tenant_gst").val data
  ).error( (data) ->
      console.log "error"
  )