C# 在jQuery中遍历SelectList

C# 在jQuery中遍历SelectList,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,在我的控制器中,我正在创建一个选择列表 public string Ajax_GetUnusedDCList(Guid storeId) { DataRepository.Store thisStore = repo.Where(x => x.id == storeId).SingleOrDefault(); SelectList list = thisStore.GetStoreUnusedDCList("Store");

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

    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运行时错误:语法错误,无法识别 表达式:[{“Selected”:false,“Text”:“9321”,“Value”:null}]

Microsoft JScript运行时错误:“长度”为null或不是对象

Microsoft JScript运行时错误:“未定义”为null或不是对象

Microsoft JScript运行时错误:“matches”为null或不是对象


我只想返回一个SelectList并填充一个下拉列表

我认为您可以发送SelectList而无需序列化,这样您就可以在客户端使用自己的函数进行访问。 作为


您已经将数据作为字符串,所以首先需要将数据转换为json对象

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

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

这将有助于解决您的问题。

您应该查看返回的
数据,看看它到底是什么。如果您查看第一个错误,它似乎是[{“Selected”:false,“Text”:“9321”,“Value”:null}],看起来不错,我想使用不同格式的
每个
。不要试图从数据中生成jQuery对象<代码>$。每个(数据,函数(i,v){…})
返回的数据是单个字符串还是已解析为javascript。也许您需要告诉ajax()函数返回的数据是JSON。$。每个(数据…)都会给出此错误。Microsoft JScript运行时错误:预期为对象
success: function (data) {
    var json = (typeof data) == 'string' ? eval('(' + data+ ')') : data;
    $(json).each(function (index, val) {
         alert(val.Text);
    });   }