在jQuery中迭代SelectList

本文关键字:SelectList 迭代 jQuery | 更新日期: 2023-09-27 18:09:27

在我的控制器中,我正在创建一个选择列表;

    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运行时错误:语法错误,无法识别表达式:[{"选择":假的,"文本":"9321","价值":零}]

Microsoft JScript运行时错误:'length'是null或不是一个对象

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

Microsoft JScript运行时错误:'matches'是null或不是对象

我要做的就是返回一个SelectList并填充一个下拉列表。

在jQuery中迭代SelectList

我认为你可以在不序列化的情况下发送SelectList,这样你就可以在客户端使用你的函数本身进行访问。

return Json(listObj,JsonRequestBehaviour.AllowGet);

您已经获得了作为字符串的数据,因此首先需要将数据转换为json对象。

尝试下面的代码在客户端将字符串转换为json。

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