2010-03-04 63 views
0

此問題與this有關。

我用下面的從我的網頁上選擇的元素提取屬性&值:

var valuesArray = $("select").map(function() 
{ 
    return $.getAttributes($(this).find(":selected")); 
}); 

var arr = new Array(); 
$.each(valuesArray, function() 
{ 
    arr.push($(this)[0]); // this filters out things like 'length' 
}); 

基本上,後我得到代表我的選擇框的屬性對象的數組,我想要將其轉換成一個數據串,我可以傳遞給服務器

// get data string for server 
var data = $.toJSON(arr); 

的JSON返回的是:

[{"siteId":"2"},{"filterId":"2","factSheetPanelId":"2"}] 

,我把它傳遞給服務器,像這樣:

$.get(url, data, function(result) 
{ 
    // do stuff 
}, "html"); 

在服務器上的代碼,但它不是拿起值&模型綁定失敗

public PartialViewResult PanelList(FactsheetPanel panel, Site site) 
{ 
    // panel.FactsheetPanelId == 0. I would expect it to be 2 
    // same for site.SiteId.. 
} 

有人能看到點兒明顯問題呢?

回答

0

不要傳遞JSON。 jQuery將簡單地傳遞到服務器,不會知道,除非你寫一個JSON數據綁定有什麼用它做。

相反,通過一個JavaScript對象。 jQuery將序列化到查詢字符串參數,其正常工作。例如:

var data = { 
       panel: { filterId: "2", factSheetPanelId: "2" }, 
       site: { siteId: "2" } 
      }; 
1

這看起來是錯誤的。它會幫助,如果你還貼出你的FactsheetPanelSite類,但無論如何,據我瞭解,這裏是你的JSON應該如何從你的HTML元素得到的值並處理它們後。

{"site.siteId":"2", "panel.filterId":"2","panel.factSheetPanelId":"2"}