var obj = { subjects: [{ area: "Math"}, {area: "English"}] }
$.ajax({
type: 'POST',
data: {"mydata": JSON.stringify(obj)},
url: '/tosubjects',
dataType: "json",
contentType: "application/json",
processData: false,
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
statusCode: {
200:function() { alert("200"); },
202:function() { alert("202"); }
},
success: function() { alert("sent"); },
error: function(xhr){ alert("error: " + xhr.statusText);
}
});
与
<%= csrf_meta_tag %>
在我的表格助手中。我正在使用Rails。
这适用于单个记录。但是,如上所述,当尝试将两个记录作为json数组传递时,我得到错误:
JavaScript component does not have a method named: "available"
这是因为我写的方式
data: {"mydata": JSON.stringify(obj)},
当我把它写成:
数据:JSON.stringify(obj)
,
没有错误,但是我没有办法为对象指定名称,例如params[:mydata]
。
如何编写data:
字段?
答案 0 :(得分:0)
这很有用。但如果有更好的方法......请!
var obj = { subjects: [{ area: "Math"}, {area: "English"}] }
$.ajax({
type: 'POST',
data : JSON.stringify(obj),
url: '/tosubjects',
dataType: "json",
contentType: "application/json",
processData: false,
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
statusCode: {
200:function() { alert("200"); },
202:function() { alert("202"); }
},
success: function() { alert("sent"); },
error: function(xhr){ alert("error: " + xhr.statusText); }
});
在控制器中,
ar = params[:subjects]
ar.each do |obj|
subject = Subject.new(obj)
if subject.save
#
else
#
end
end
respond_to do |format|
format.html {}
format.json {
render :json => @subject
}
end