2013-11-25 76 views
3

我嘗試通過Ajax將我的網格數據從jQuery傳遞給MVC Action。 我有一個按鈕「保存」我的網頁上,這是jQuery的代碼,請點擊:如何將數組從jQuery Ajax傳遞給MVC 5 Action?

var result = []; 
$('#btnSave').click(function() { 
    $('#tblMatters tbody tr.mattersRow').each(function() { 
    var item = {}; 

    if ($(this).find('td.qbmatter > div.dropdown').length > 0) { 
     item.QBMatter = $(this).find('td.qbmatter > div.dropdown > a').text(); 
    } else { 
     item.QBMatter = $(this).find('td.qbmatter').text(); 
    } 

    item.Hours = $(this).find('td.hours').text(); 
    item.Person = $(this).find('td.person').text(); 

    if ($(this).find('td.rate > div.dropdown').length > 0) { 
     item.Rate = $(this).find('td.rate > div.dropdown > a').text(); 
    } else { 
     item.Rate = $(this).find('td.rate').text(); 
    } 

    item.Amount = $(this).find('td.amount').text(); 
    result.push(item); 
    }); 

    $.ajax({ 
    url: "/Home/SaveQBMatter", 
    type: "POST", 
    data: { 'Matters': result }, 
    dataType: "json", 
    traditional: true, 
    contentType: "application/json; charset=utf-8", 
    success: function (data) { alert("Success!"); }, 
    error: function() { alert("An error has occured!!!"); } 
    }); 
}); 

我檢查了result陣列,它是正確的。它包含應該是的每個值。 在我的HomeController我有我的數據如下模式:

public class QBMatter 
{ 
    public string QBDescription { get; set; } 
    public string Person { get; set; } 
    public decimal Hours { get; set; } 
    public int Rate { get; set; } 
    public decimal Amount { get; set; } 
} 

然後將以下操作:

public ActionResult SaveQBMatter (QBMatter[] Matters) 
{ 
    DBAccess dba = new DBAccess(); 
    int QBMatterID = 0; 
    foreach (QBMatter qb in Matters) 
    { 
     dba.InsertQBMatter(qb.QBDescription, qb.Person, qb.Hours, qb.Rate, qb.Amount, ref QBMatterID); 
    } 

    return RedirectToAction("Home", "Index", "Home"); 
} 

但我始終得到"An error has occured!!!"結果......我甚至沒有得到的行動,所以在AJAX水平上的某個地方... 我做錯了什麼?

+0

很大的問題,這正是我試圖做的,有幾乎相同的代碼。 –

回答

7

您需要在發送數據時將數據串聯起來。

嘗試:

   $.ajax({ 
       url: "/Home/SaveQBMatter", 
       type: "POST", 
       data: JSON.stringify({ 'Matters': result }), 
       dataType: "json", 
       contentType: "application/json; charset=utf-8", 
       success: function (data) { 
        alert("Success!"); 
       }, 
       error: function() { 
        alert("An error has occured!!!"); 
       } 
      }); 
+0

謝謝!究竟!將盡快接受它將被接受! – Bryuk

+0

@Bryuk歡迎您... – PSL

+1

完美的答案,我有幾乎完全相同的設置,我的問題是我沒有dataType/contentType設置。 Big ty。 –

相關問題