我在客戶端使用ASP.NET和jQuery。json響應包含 n r
我使用Json.NET序列化來自服務器端數據庫的數據,並在Ajax請求到達時將其發送到客戶端。
當我打開Firebug,我看到以下JSON:
{"d":"[\r\n {\r\n \"CategoryID\": 1,\r\n \"CategoryName\": \"a\",\r\n \"Description\": \"123\",\r\n \"CategoryType\": \"Personal\",\r\n \"Traits\": [\r\n {\r\n \"TraitID\": 1,\r\n \"TraitName\": \"a\",\r\n \"Description\": \"aaa\"\r\n },\r\n {\r\n \"TraitID\": 1,\r\n \"TraitName\": \"a\",\r\n \"Description\": \"aaa\"\r\n }\r\n ]\r\n },\r\n {\r\n \"CategoryID\": 1,\r\n \"CategoryName\": \"b\",\r\n \"Description\": \"bla bla\",\r\n \"CategoryType\": \"Professional\",\r\n \"Traits\": [\r\n {\r\n \"TraitID\": 1,\r\n \"TraitName\": \"a\",\r\n \"Description\": \"aaa\"\r\n },\r\n {\r\n \"TraitID\": 1,\r\n \"TraitName\": \"a\",\r\n \"Description\": \"aaa\"\r\n }\r\n ]\r\n },\r\n {\r\n \"CategoryID\": 1,\r\n \"CategoryName\": \"c\",\r\n \"Description\": \"123\",\r\n \"CategoryType\": \"Personal\",\r\n \"Traits\": [\r\n {\r\n \"TraitID\": 1,\r\n \"TraitName\": \"a\",\r\n \"Description\": \"aaa\"\r\n },\r\n {\r\n \"TraitID\": 1,\r\n \"TraitName\": \"a\",\r\n \"Description\": \"aaa\"\r\n }\r\n ]\r\n },\r\n {\r\n \"CategoryID\": 1,\r\n \"CategoryName\": \"d\",\r\n \"Description\": \"bla bla\",\r\n \"CategoryType\": \"Professional\",\r\n \"Traits\": [\r\n {\r\n \"TraitID\": 1,\r\n \"TraitName\": \"a\",\r\n \"Description\": \"aaa\"\r\n },\r\n {\r\n \"TraitID\": 1,\r\n \"TraitName\": \"a\",\r\n \"Description\": \"aaa\"\r\n }\r\n ]\r\n }\r\n]"}
從服務器端我的代碼:
[WebMethod]
public static string LoadRatingForm()
{
bll_Trait t1 = new bll_Trait();
t1.TraitID = 1;
t1.TraitName = "a";
t1.Description = "aaa";
bll_Trait t2 = new bll_Trait();
t2.TraitID = 1;
t2.TraitName = "a";
t2.Description = "aaa";
bll_Trait t3 = new bll_Trait();
t3.TraitID = 1;
t3.TraitName = "a";
t3.Description = "aaa";
bll_Trait t4 = new bll_Trait();
t4.TraitID = 1;
t4.TraitName = "a";
t4.Description = "aaa";
bll_Category c1 = new bll_Category();
c1.CategoryID = 1;
c1.CategoryName = "a";
c1.CategoryType = "Personal";
c1.Description = "123";
c1.Traits.Add(t1);
c1.Traits.Add(t2);
bll_Category c2 = new bll_Category();
c2.CategoryID = 1;
c2.CategoryName = "b";
c2.CategoryType = "Professional";
c2.Description = "bla bla";
c2.Traits.Add(t3);
c2.Traits.Add(t4);
bll_Category c3 = new bll_Category();
c3.CategoryID = 1;
c3.CategoryName = "c";
c3.CategoryType = "Personal";
c3.Description = "123";
c3.Traits.Add(t1);
c3.Traits.Add(t2);
bll_Category c4 = new bll_Category();
c4.CategoryID = 1;
c4.CategoryName = "d";
c4.CategoryType = "Professional";
c4.Description = "bla bla";
c4.Traits.Add(t3);
c4.Traits.Add(t4);
List<bll_Category> list = new List<bll_Category>();
list.Add(c1);
list.Add(c2);
list.Add(c3);
list.Add(c4);
return JsonConvert.SerializeObject(list, Formatting.Indented);
}
我的jQuery代碼:
$.ajax({
type: "POST",
url: "MyProfile.aspx/LoadRatingForm",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var html;
var categories = response.d;
$.each(categories, function (i, category) {
// create
//while (category.CategoryType == "Professional") {
//
//}
html += category.CategoryName + " ";
});
dialog.append(html);
},
error: function() {
alert("ERROR");
}
});
的 '對話'變量是一個jQuery UI模式對話框,並且$ .ajax代碼位於對話框的「打開」事件處理程序中...
我應該怎樣做才能使序列化結果成爲「正確的」json格式,而沒有任何'\ n','\ r'和'\'?
提前致謝!
感謝您的輸入:)你已經幫了我很多! – Sash 2011-05-25 06:51:54