0

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

    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 运行时错误:“长度”为空或不是对象

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

Microsoft JScript 运行时错误:“匹配”为空或不是对象

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

4

2 回答 2

1

我认为您可以在不序列化的情况下发送 SelectList 以便您可以使用您的函数本身在客户端访问。作为

return Json(listObj,JsonRequestBehaviour.AllowGet);
于 2013-04-16T05:49:25.770 回答
0

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

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

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

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

于 2013-04-16T07:17:01.600 回答