2011-10-10 79 views
0

使用JSON我有一些麻烦,同时做两个下拉列表:未定义的对象,而填充下拉列表中MVC2

  • 地区:所有地区
  • 市:市属于区域的选定值

一切都很好,直到市从JSon读取项目。 下拉城的所有物品都是未定义

这里是我的代码

$(document).ready(function() { 
     $('#AreaList').change(function() { 
      $.ajaxSetup({ cache: false }); 
      var selectedItem = $(this).val(); 
      if (selectedItem == "" || selectedItem == 0) { 
       //Do nothing 
      } else { 
       $.ajax({ 
        url: '<%=Url.Content("~/") %>Administration/GetDropDownCity', 
        data: { item: $("#AreaList> option:selected").attr("value") }, 
        dataType: 'json', 
        traditional: true, 
        type: 'POST', 
        success: function (data) { 
         var items = ""; 
       $.each(data, function (i, data) { 
        items += "<option value='" + data.value + "'>" + data.description + "</option>"; 
       }); 
       $("#CityList").html(items); 
       $("#CityList").removeAttr('disabled'); 
        } 
       }); 
      } 
     }); 
    }); 

的JSON是存在的,我检查了Firebug的,并在下面列出

"[{\"value\":\"107\",\"description\":\"KOTA DEPOK\"},{\"value\":\"141\",\"description\":\"KOTA JAKARTA SELATAN\"}]" 

任何想法来解决这个问题? 反正,对不起我的语言:)

编辑: 问题是sovled .. 我用jQuery.parseJSON()阅读JSON

回答

0

我不敢肯定,但我认为一个变量在这里冲突

$.each(data, function (i, data) { 
        items += "<option value='" + data.value + "'>" + data.description + "</option>"; 
       }); 

在枚举变化dataval例如像

$.each(data, function (i, val) { 
        items += "<option value='" + val.value + "'>" + val.description + "</option>"; 
       }); 

编辑:也尽量提醒data[0].valuedata[0].description确保JSON字符串被解析正确的客户端。否则,您可能需要在返回的数据上拨打$.parseJsone
编辑2:一两件事你可以尝试是使用for循环

for(i=0;i<data.length;i++) 
{ 
    items += "<option value='" + data[i].value + "'>" + data[i].description + "</option>"; 
} 
+0

我会用警报(data.value),以确保数据可以被看作。结果是未定义相同的下拉列表 – vantian

+0

你试着改变变量名称从'数据'到'val'或别的什么? –

+0

我做了,仍然显示未定义:( – vantian