這是一個模糊的問題,但我不確定該如何工作。螢火蟲說,從我的Ajax請求的JSON對象(數組?)是這樣的:如何將此Json數組轉換爲JQuery可讀的格式?
{
"jsonResult":
"[
{\"OrderInList\":1},
{\"OrderInList\":2}
]"
}
這是通過$ .getJSON Ajax請求通過檢索:
$.getJSON("/Json/GetOrderSelectList?parentCategoryId=" + postData, testData, function (jsonResult) {
$('#orderInList option').remove();
var map = {
"TestKey1": "TestValue1",
"TestKey2": "TestValue2"
};
$.each(jsonResult, function (key, value) {
$("#orderInList").append($("<option value=" + key + ">" + value + "</option>")
);
});
如果我更換$。每個( jsonResult)與$ .each(地圖)選擇列表正確填充。否則,我的選擇列表只會說'未定義'。
序列化JSON的這個動作在我的MVC控制器:
public JsonResult GetOrderSelectList(int parentCategoryId)
{
var result = Session
.QueryOver<Category>()
.Where(x => x.Parent.Id == parentCategoryId)
.OrderBy(x => x.OrderInList).Asc
.List();
var toSerialize =
result.Select(r => new {r.OrderInList});
var jsonResult = JsonConvert.SerializeObject(toSerialize);
return Json(new
{ jsonResult,
}, JsonRequestBehavior.AllowGet);
}
所以我覺得問題可能的Json的行動與迴應格式?任何幫助感謝!下面
編輯答案爲
的答案都幫助了我。我似乎無法強烈地鍵入變量jsonResult,所以感謝@JBabey指出了我在閱讀json屬性時的錯誤,並在$ .each語句中建議了函數(鍵,值)。
感謝@Darin Dimitrov幫助排序我的控制器!
這看起來真的很不錯,但現在我收到了一個關於循環引用的500錯誤(您之前無法知道這個錯誤)。當我添加一個.Select(x => x.OrderInList)給查詢時,我得到了一個關於我的parentCategoryId的不同的錯誤。Where語句:「值」1「不是」CumbriaMD.Domain.Category「類型,不能用於此泛型集合。
參數名稱:值」hrrrm!我認爲這就是爲什麼在首先創建我的查詢之後使用linq表達式的原因。 – Kiada 2012-08-12 16:34:23
你在哪裏添加'.Select'子句?在'.List'方法調用之後,它是否在LINQ查詢的末尾? – 2012-08-12 16:37:47
謝謝,讓它現在工作:) – Kiada 2012-08-12 16:53:26