如何在jquery中读取JSON数据(数据集包含许多表),以便一次绑定多个下拉列表

时间:2016-12-13 11:53:41

标签: jquery cordova dataset

在使用apache cordova phonegap开发Android应用程序时,我想在页面加载时绑定多个下拉列表。

我使用web API控制器方法获取数据代码,如下所示:

  public DataSet GetDDL()    
        {
            DataSet ds = new DataSet();
            try
            {
                GetCompany user = new GetCompany();
                con = new SqlConnection(constr);
                cmd = new SqlCommand();
                cmd.Connection = con;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "SP_ONLINE_APPLICATION_DROPDOWN_FILL";
                 con.Open();
                da = new SqlDataAdapter(cmd);
                da.Fill(ds);
            }
            catch (Exception ex)
            {
           // lblMsg = ex.Message();
             }
            finally
            {
            con.Close();
            con.Dispose();
            }
            return ds;
        }

获取数据

{"Table":[{"intDist_Id":664,"vc_Dist_Name":"---"},                 {"intDist_Id":14,"vc_Dist_Name":"Adilabad"},        {"intDist_Id":508,"vc_Dist_Name":"Agra"}],
"Table1":[{"intCity_Id":600,"vcCity_Name":"--"},    {"intCity_Id":503,"vcCity_Name":"Aarmori"}]}

我想阅读两个表:填写下拉列表

Jquery代码就像

 var uri = 'http://localhost:6584/api/ChangeOfName/Getddl';
    var testDdl1 = $('#ddDistrict');
  var testDdl2 = $('#ddCity');
   $.getJSON(uri)
    .done(function (data) {

       $.each(data, function (key, item) {
           if(key=="Table")
           {
               var option = $("<option/>");
       option.attr("value",item.intDist_Id).text(item.Disvc_Dist_NametName);
               testDdl.append(option);
           }
       })
       $.each(data, function (key, item) {
           if(key=="Table1")
           {
               var option = $("<option/>");
               option.attr("value", item.intCity_Id).text(item.vcCity_Name);
               testDdl2.append(option);
           }
       })
   }
)

但发现'item.intDist_Id'未定义。为什么呢?

2 个答案:

答案 0 :(得分:1)

Javascript将对象视为C#中的词典。所以jQuery每个都循环通过JSON中的键/值对。在这种情况下:Table和Table1及其各自的数组值。该数组没有属性intDist_Id,因此它返回undefined。

您必须遍历items数组值以获取具有属性intDist_Id等的实际对象。

$.each(data, function (key, items) {
  $.each(items, function(index, item) {
    if(key=="Table")
    {
      var option = $("<option/>");
      option.attr("value",item.intDist_Id).text(item.Disvc_Dist_NametName);
      testDdl.append(option);
    }
    else if(key=="Table1")
    {
      var option = $("<option/>");
      option.attr("value",item.intDist_Id).text(item.Disvc_Dist_NametName);
      testDdl.append(option);
    }
  }); 
});

答案 1 :(得分:0)

你需要做这样的事情:

for (var i=0; i<data.length; i++) {
   alert("Your Results: " + data[i].pk_records_id);
  // you need to write each key name here
}