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(data);
}
$('#讲座容器体').html(str);
}
您需要的巫毒是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>';