2014-05-12 24 views
1
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);  
    }   
}); 

如何爲ajax post編寫json數組?

<%= 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

'數據:obj'想到什麼?不需要串聯! – adeneo

+0

謝謝。你對弦化是對的。但是...我必須重寫obj as,var obj ='{「subjects」:[{「area」:「Math」},{「area」:「English」}]}' – clyde

回答

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