2014-06-21 46 views
2

我試圖與下面的代碼,但顯示控制器側空子傳遞從視野中MVC控制器的對象列表..如何透過JSON.stringify

觀點:

<script> 
function getme(){ 
debugger; 
var emp = [ 
{ empid: 1, name: 'sasi' }, 
{ empid: 2, name: 'sathish'} 
]; 
emp = JSON.stringify({ 'emp': emp }); 
$.ajax({ 
contentType: 'application/json; charset=utf-8', 
dataType: 'json', 
type: 'POST', 
url: '/Home/getemplist', 
data: JSON.stringify(emp) 
}); 
} 


</script> 
<input type="button" onclick="getme();" value="Click me" /> 

控制器:

public void getemplist(List<Emp> emp) 
{ } 

Emp.cs:

public class Emp 
{ 
public int empid { get; set; } 
public string name{get;set;} 
} 

回答

1

您發送到服務器的數據存在問題。你不需要JSON.stringify 2次。

function getme() { 
    debugger; 
    var emp = [ 
    { empid: 1, name: 'sasi' }, 
    { empid: 2, name: 'sathish' } 
    ]; 
    emp = JSON.stringify({ emp: emp });//make json string once 
    $.ajax({ 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     type: 'POST', 
     url: '/Home/getemplist', 
     data: emp //send it to server 
    }); 
} 
+0

事實上,你永遠不需要JSON.stringify。 jQuery將負責處理對象本身。另外,JSON.stringify與某些版本的IE不兼容。 jQuery確保一切都保持兼容(如果你使用1.x版本)。 – gretro

+0

沒有JSON.stringify,它似乎沒有工作。是的,它與某些版本的IE不兼容,所以在這種情況下,我們可以使用polyfill。 – Akhlesh

+0

感謝您的回覆傢伙..最後它是爲我工作。在控制器操作中,我剛剛將參數類型更改爲字符串例如:public void getemplist(string emp)。然後使用JavaScript序列化程序類,我能夠將字符串數據轉換爲列表對象..在腳本中,我剛剛改變了方式我把這個控制器動作稱爲$ .post(「/ Home/getemplist /」,{'emp':emp})。我會在稍後發佈我的整個代碼.. :) :) – sasi

3

經過大量的谷歌搜索的。我發現張貼的對象列表到控制器..我已經修改了一點在我的代碼的方式......這裏是!

腳本:

var emp = [{ 'empid': 1, 'name': 'sasi' },{ 'empid': 2, 'name': 'sathish'}]; 
    emp = JSON.stringify(emp) 
    $.post("/Home/getemplist/", { 'emp': emp }) 

控制器:

在這裏,我只是改變了參數字符串類型。使用JavaScriptSerializer可以能夠將該字符串數據轉換成你的類列表對象..你可以更好地理解它,如果你看到下面我的代碼:

public void getemplist(string emp) 
    { 
     List<Emp> personData; 
     JavaScriptSerializer jss = new JavaScriptSerializer(); 
     personData = jss.Deserialize<List<Emp>>(emp); 
     // DO YOUR OPERATION ON LIST OBJECT 

    } 

包括在此(System.Web.Script.Serialization)命名空間的控制器以便使用JavaScriptSerializer類。

希望這有助於!快樂編碼:)