Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向rails db调用AJAX post请求时,返回的数据是一个通用对象列表_Php_Sql_Ruby On Rails_Ajax_Highcharts - Fatal编程技术网

Php 向rails db调用AJAX post请求时,返回的数据是一个通用对象列表

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]”。我希望返回的数据是数

在我视图中的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]”
。我希望返回的数据是数据库中的对象及其列数据,我最终能够使用
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)