2013-04-16 33 views
0

在我的控制器中,我創建了一個選擇列表;通過jQuery中的SelectList迭代

public string Ajax_GetUnusedDCList(Guid storeId) 
    { 
     DataRepository.Store thisStore = repo.Where(x => x.id == storeId).SingleOrDefault(); 
     SelectList list = thisStore.GetStoreUnusedDCList("Store"); 

     JavaScriptSerializer serializer = new JavaScriptSerializer(); 
     return serializer.Serialize(list); 
    } 

然後在我的jQuery我嘗試步每個項目,並在這一點上提醒了值;

$.ajax({ 
    url: "/Stores/Ajax_GetUnusedDCList", 
    type: 'POST', 
    data: { storeId: '041F0D0E-5AD3-4817-9604-3FD81F08BA9B' }, 
    success: function (data) { 
    $(data).each(function (index, val) { 
     alert(val.Text); 
    }); 
    } 
}); 

但是我得到像這樣的錯誤;

Microsoft JScript runtime error: Syntax error, unrecognized expression: [{"Selected":false,"Text":"9321","Value":null}]

Microsoft JScript runtime error: 'length' is null or not an object

Microsoft JScript runtime error: 'undefined' is null or not an object

Microsoft JScript runtime error: 'matches' is null or not an object

所有我想要做的就是返回的SelectList和填充下拉。

+0

你應該看看返回的'data',看看它到底是什麼。 – jfriend00

+0

如果你看看第一個錯誤,它看起來是[{「Selected」:false,「Text」:「9321」,「Value」:null}]看起來沒問題我認爲 – griegs

+1

使用'each'的格式不同。不要試圖將jQuery對象放在數據之外。 '$ .each(data,function(i,v){...});' – ahren

回答

1

我想你可以發送SelectList而不需要序列化因此,你可以在客戶端使用你的函數本身。 作爲

return Json(listObj,JsonRequestBehaviour.AllowGet); 
0

你已經得到的數據作爲一個字符串,所以首先需要將數據轉換成JSON對象。

嘗試下面的代碼將字符串轉換爲json在客戶端。

success: function (data) { 
    var json = (typeof data) == 'string' ? eval('(' + data+ ')') : data; 
    $(json).each(function (index, val) { 
     alert(val.Text); 
    }); } 

這將有助於解決您的問題。