Jquery RubyonRails-如何使用ajax读取json文件?

Jquery RubyonRails-如何使用ajax读取json文件?,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我用的是这些密码 #In timetable/new.html.erb <%= select_tag :department, options_for_select( @departments.collect{ |d| [d.department_name, d.id]}, nil),{ id: "department_select" } %> #In timetable controller def update_lectures if params[:depart

我用的是这些密码

#In timetable/new.html.erb

<%= select_tag :department, options_for_select(
 @departments.collect{ |d| [d.department_name, d.id]}, nil),{ id: "department_select" } %>



#In timetable controller

def update_lectures
  if params[:department].to_i == 0
    @lectures = Department.find_by(department_name: params[:department]).l    ectures
  else
    @lectures = Department.find(params[:department]).lectures
  end
respond_to do |format|
  format.json { render :json => @lectures.to_json }
end




#In javascript

$("#department_select").change( function() {
  $.ajax({
    url: window.location.origin + '/timetable/update_lectures',
    dataType: "json",
    data: $("#department_select").serialize(),
    success: function(data){
      var str = '';
      for(var i = 0; i < data.length; i++) {
      str += '<li>' + data[name] + '</li>';
      }
      $('#lecture-container-body').html(str);
    }
  });
});
#在timeline/new.html.erb中
#时刻表控制员
def更新课程
如果参数[:部门].to_i==0
@讲座=部门。查找人(部门名称:params[:Department])。体系结构
其他的
@讲座=Department.find(params[:Department])讲座
结束
回应待办事项|格式|
format.json{render:json=>@touctions.to_json}
结束
#在javascript中
$(“#部门选择”)。更改(功能(){
$.ajax({
url:window.location.origin+/timeline/update\u,
数据类型:“json”,
数据:$(“#部门选择”).serialize(),
成功:功能(数据){
var-str='';
对于(变量i=0;i';
}
$('#讲座容器体').html(str);
}
});
});
我想知道在javascript中如何读取“数据”

当我使用数据[name]=>“未定义”时

当我在控制台中使用数据[讲座名称]=>“未捕获引用错误:讲座名称未定义”

@讲座将有以下栏目:id、讲座名称、讲座部门、passfail。。等等。

(没有“名称”列)


请在您的成功回调中提供帮助。请尝试:

success: function(data){
  var str = '';
  for(var i = 0; i < data.length; i++) {
  str += '<li>' + JSON.parse(data).lecture_name + '</li>';
  }
  $('#lecture-container-body').html(str);
}
成功:函数(数据){
var-str='';
对于(变量i=0;i

您需要的巫毒是JSON.parse()。它是JSON.stringify()的补充。

首先,您没有在for循环中提取索引。因此,阵列没有你需要的道具

在javascript中,您可以按预期使用括号符号动态访问道具,但属性本身必须是字符串或对“类似字符串”值的引用

str+='
  • '+数据[i]['name']+'
  • '//注意名字中的引号!
    做同样的事

    str += '<li>' + data[i].name + '</li>';
    
    str+='
  • '+数据[i].name+'
  • ';
    所以,当你在做

    str += '<li>' + data[last_name] + '</li>';
    
    str+='
  • '+数据[姓氏]+'

  • 解释器会查找名为
    last\u name
    的变量,该变量会抛出您提到的错误。

    避免在javascript中使用“name”作为变量名。这是一个保留关键字。您是否尝试将
    数据记录到控制台并查看它的外观?数据的结构将决定您如何使用itKatharine,使用jQuery和
    dataType:'json'
    jQuery为您进行解析,因此收到的
    data
    参数是一个javascript对象。使用纯javascript您是对的,但是您需要在字符串进入for循环之前对其进行解析,否则您将迭代字符…它不起作用..:(…刚刚打印了“undefined”我想知道问题出在哪里T.T您能
    console.log
    data
    参数吗?了解结构将很容易帮助您。谢谢。我使用了console.log(data)
    str += '<li>' + data[last_name] + '</li>';