2013-11-14 63 views
1

在我的AJAX post調用中,我希望數據的格式如此(在Chrome Network Headers詳細信息中查看時) - 這是服務器端期望的內容。現在的問題是:我怎麼可以更新JS以下格式化數據是這樣的:AJAX Post上的數據格式

percentages[0].Id:7 
percentages[0].Percentage:26.1 
percentages[1].Id:8 
percentages[1].Percentage:20.3 

但是,目前的數據進行格式化這樣

percentages[0][Id]:7 
percentages[0][Percentage]:26.1 
percentages[1][Id]:8 
percentages[1][Percentage]:20.3 

我目前格式化這樣的數據JS之前,我通過AJAX發送

var params = {}; 
var dict = []; 
for (var idx in data) { 
    var item = { 
     Id: idx, 
     Percentage: data[idx] 
    }; 
    dict.push(item); 
} 
params['percentages'] = dict; 

其中data變量有這樣的數據(當寫入到Chrome瀏覽器控制檯):

Object {7: "26.1", 8: "20.3"} 

在此先感謝

編輯:
響應@Bogangles要求:我使用.NET和我試圖填補結構爲:

IEnumerable<PercentageViewModel> percentages 

其中PercentageViewModel是:

public class PercentageViewModel 
{ 
    public int Id { get; set; } 
    public string Percentage { get; set; } 
} 
+0

我不確定這裏有什麼不同。你能從服務器語言的角度舉例說明你想要的數據嗎? – Bojangles

+0

我認爲只是它在控制檯中的格式。在語義上,這兩者之間沒有區別。你應該看看「真正的」流量(網絡選項卡,像'顯示原始') – hgoebl

+0

啊,你不與JSON對象通信,但使用www-form-urlencoded,對吧? – hgoebl

回答

0

這是答案,允許服務器端數據結構要適當填充

var i = 0; 
for (var idx in data) { 
    params['percentages[' + i + '].Id'] = data[idx].Id; 
    params['percentages[' + i + '].Percentage'] = data[idx].Percentage; 
    i++; 
}