【问题标题】:how to write a json array for ajax post?如何为ajax post编写一个json数组?
【发布时间】:2014-05-12 04:10:56
【问题描述】:
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:字段需要怎么写?

【问题讨论】:

  • data : obj 想到了吗?无需字符串化!
  • 谢谢。你对字符串化是正确的。但是...我不得不将 obj 重写为 var obj = '{ "subjects": [{ "area": "Math"}, {"area": "English"}] }'

标签: jquery ruby-on-rails ajax json


【解决方案1】:

这行得通。但如果有更好的方法......拜托!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2011-03-17
    • 2012-06-04
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    • 2012-05-30
    相关资源
    最近更新 更多