2009-07-22 59 views
0

我想傳遞一個嵌套的JavaScript對象到我的ASP.NET MVC操作方法。 下面是代碼(簡化):如何將嵌套的JavaScript對象傳遞給ASP.NET MVC操作方法?

$.getJSON('some/url', 
       { 

        index: pageIndex, 
        pageSize: pageSize, 
        filter:{one:'one',two:'two',three:'three'} 
       },someCallBack(msg) 
     ); 

我使用jQuery和執行我的插件,它懶洋洋地從服務器獲取數據分頁。它工作的魅力,但現在我需要傳遞一個JavaScript'過濾器'對象與可變數量的屬性 - 過濾器。在服務器端,我得到一個對象數組,其中第一項是一個字符串,包含'[Object object]'字面值。

顯然,我的嵌套對象(過濾器)沒有被展開並轉換爲服務器端的對象(哈希)。這可能嗎?我不想強制編碼我的過濾器,因爲這個插件意味着被非正式應用。

非常感謝。

回答

3

您可以使用System.Web.Script.Serialization.JavaScriptSerializer發送/接收JSON序列數據:

JavaScriptSerializer js = new JavaScriptSerializer(); 
Filter f = js.Deserialize<Filter>(json_str); 

更多細節here。要編碼要發送到服務器的JSON數據,請使用JavaScript的JSON序列化庫,如json2.js。然後發送這樣的查詢:

var filter = {field1: 'value1', field2: 'value2'} 

$.ajax({ 
type: "POST", 
url: '/server/path', 
data: { filter: JSON2.stringify(filter) }, 
dataType: "json", 
success: function(data) { 
    // do something 
} 
}); 
1

JSON將是完美的。基本上,您需要將對象轉換爲JSON表示,然後通過線路發送。一旦它在服務器上可用,您可以隨意處理它。

關於JSON是什麼,Crockford有一個great article,如何理解符號,他提供了一個工具來將您的對象轉換爲JSON符號。

1

你可以使用下面的js lib json2 library,然後你可以使用stringify方法來確保你的json的服務格式正確。

var data0 = {one:'one',two:'two',three:'three'} 

var json = JSON2.stringify(data0); 

$.ajax({ 
type: "POST", 
url: someServiceUrl, 
data: json, 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
success: function(msg) { 

} 
}); 
相關問題