Php 向rails db调用AJAX post请求时,返回的数据是一个通用对象列表
在我视图中的rails应用程序中,我试图调用一个ajax查询,参数为date_from和date_to,然后路由到控制器中的一个操作,该操作将查询数据库中的日期。它应该在ajax代码中的“成功”反馈中返回这个日期范围,但是如果我选择的范围是2009年1月1日到2009年1月4日(这4天有4个对象),它会返回,例如,Php 向rails db调用AJAX post请求时,返回的数据是一个通用对象列表,php,sql,ruby-on-rails,ajax,highcharts,Php,Sql,Ruby On Rails,Ajax,Highcharts,在我视图中的rails应用程序中,我试图调用一个ajax查询,参数为date_from和date_to,然后路由到控制器中的一个操作,该操作将查询数据库中的日期。它应该在ajax代码中的“成功”反馈中返回这个日期范围,但是如果我选择的范围是2009年1月1日到2009年1月4日(这4天有4个对象),它会返回,例如,“[object object],[object object],[object object],[object object],[object object]”。我希望返回的数据是数
“[object object],[object object],[object object],[object object],[object object]”
。我希望返回的数据是数据库中的对象及其列数据,我最终能够使用Highcharts timeplot
。这是我的问题代码:
视图中的我的JavaScript:
function search() {
var full_date_from = $( "#from" ).datepicker("getDate");
var full_date_to = $( "#to" ).datepicker("getDate");
var date_from = full_date_from.getMonth()+1 + "-" + full_date_from.getDate() + "-" + full_date_from.getFullYear();
var date_to = full_date_to.getMonth()+1 + "-" + full_date_to.getDate() + "-" + full_date_to.getFullYear();
$.ajax({
url:"<%= url_for :controller => 'objects', :action => 'search' %>",
data:'date_from=' + encodeURIComponent(date_from) + '&date_to=' + encodeURIComponent(date_to) + '&object_id=' + <%= @id %>,
dataType: "json",
cache:false,
success:function (data) {
$('#output').text(data); //outputs to <p id="#output"></p> on page
}
})
}
如果起始日期为2009-01-01,截止日期为2009-01-04,则@range
数组到logger.debug()的当前输出
#<River::ActiveRecord_Relation:0xa6d4070>
我猜您正在寻找这样的东西,以便只返回所需的属性:
render :json => @range.select('data, date').to_json
或使用映射功能:
render :json => @range.map{|object| {data: object.data, date: object.date}}.to_json
在客户端的成功回调中获得结果后,只需使用以下内容(coffeescript)迭代数据中的每个对象:
您还可以确保使用console.log或alert正确接收对象:
console.log(data[0].date)
alert(data[0].date)
您能提供一个您满意的控制器输出示例吗?实际上,我只想在我的视图的javascript中使用这个输出,以便在图表中使用。数据库表中的对象有一个“data”列,它将被转换成数组并用作图表的y,然后另一个列“date”将用作x。那么render:json=>@range.map{data:object.data,date:object.date}to_json
呢?您应该能够在客户端迭代每个对象,并请求它们的数据
或日期
。我将其输入到我的操作中,但我仍然得到[object object]。是否有某种方式可以在我的网页上打印对象数据?(我现在打印它只是为了测试,稍后我将把对象数据放入它们各自的数组中。)为什么不把从控制器返回的数据
(它是成功
回调的一个参数)放在那里迭代每个[object]
?这些对象应该具有data
和date
属性,因此您应该能够像这样访问它们:alert(data[0].date)
或$(“#output”).text(data[0].date)代码>
render :json => @range.map{|object| {data: object.data, date: object.date}}.to_json
success: (data) ->
for object in data
$('#output').append(object.date);
console.log(data[0].date)
alert(data[0].date)