2011-01-21 46 views
0

我有一個從我的_form.html.erb調用的以下JavaScript。從控制器方法或助手在rails 3中獲取數據到ajax

$.ajax({ 
type: "GET", 
url: "/articles/" + $(this).attr('value'), 
success: function(data){} 
}); 

我想從這個請求中獲取某種數據(可能是json對象或Article對象)。我不確定是否需要打電話給助手。當我打電話給一個控制器時,所有返回給我的是來自相應視圖的html響應。

回答

4

您應該使用控制器中的respond_to塊根據格式生成不同的響應。

def show 
    @article = Article.find(params[:id]) 
    respond_to do |format| 
    format.html 
    format.json { render :json => @article } 
    end 
end 

這樣的模板將被渲染爲與HTML頭所有標準的要求,但如果您發送使用JSON頭一個Ajax請求,這會使解析成JSON的文章。

更新:

使用下面的AJAX調用指定JSON作爲預期的響應:

$.ajax({ 
    type: "GET", 
    dataType: "json", 
    url: "/articles/" + $(this).attr('value'), 
    success: function(data){} 
}); 
+0

響應我回來是HTML的響應。基本上我有一個函數在我進行GET調用的observe_field中。所以我需要將json對象返回到具有該字段的請求中,以便可以更新該頁面中的字段。 – user140736 2011-01-21 03:00:14

0

使用參數又如:

JS:

$("#booking_addr_edit").click(function(event) { 
      var addressid = $('#appointment_order_currentaddress').val(); 
      $.ajax({ 
       type: "GET", 
       dataType: "json", 
       data: {address_id: addressid}, 
       url: '/booking/get_client_address', 
       success: function(data){ 
       $('#appointment_order_address').val(data[0].street +' '+ data[0].city + ' ' + data[0].state); 
       $('#appointment_order_phone').val(data[0].phone); 
       $('#appointment_order_apartment').val(''); 
       $('#booking_client_details').show(); 
       } 
      }); 
      event.preventDefault(); 
     }); 

控制器

def get_client_address 
    @address = Address.where(id: params[:address_id]) 
    respond_to do |format| 
     format.js { render :json => @address } 
    end 
    end 

路線

match "booking/get_client_address" => "booking#get_client_address" 
相關問題