2012-05-04 82 views
0

我错过了如何发布到ActionMethods以在此处提取数据?Ajax post不会将数据填充到下拉选择列表

我需要对ActionMethod执行一个简单的javascript/jquery调用,它将使用IQueryable(或List)类型的Json对象中的数据填充我的下拉菜单。

于是,我两个选择:

function populateuUsers(id) { 
    $.post("/User/GetUsersJson/", { id: id }, function (data) { 
     if ($.isEmptyObject(data)) { 
      alert("Empty"); 

     } 

     $.each(data, function (item) { 
      alert(item); 
      $("#user-list").append(
       $("<option></option>").text(data[item].FullName).val(data[item].Id) 
       ); 
     }); 

    }, "json"); 
} 

我得到 “数据不确定”

然后我尝试了一个错误:

function populateUsers(id) { 
    $.ajax({ 
     type: 'post', 
     datatype: 'json', 
     url: "/User/GetUsersJson/" + id, 
     success: function (data) { 
      alert(data); 
      $.each(data, function (item) { 
       alert(item); 
       $("#users-list").append(
        $("<option></option>").text(data[item].FullName).val(data[item].Id)); 

      }); 
     }, 
     error:function() 
      { 
       alert(data); 
      } 

    }); 
} 

也不起作用。 注意事项...我设置了断点并在GetUsersJson Action方法中验证了这些数据用户控制器得到了正确的填充并返回到了javascript函数。

为什么它不工作呢?为什么“数据未定义”,它的行为就像没有任何回报?

预先感谢您。

+0

什么是你GetUsersJson动作看起来像在控制器上? – MattSavage

+0

只需从存储库中提取数据并返回Json(myUsers)。 myUsers对象类型为IQueryable 。 当用断点调试时,我在该列表对象中看到约10个用户。让我知道你是否想看到实际的代码。 – Shenaniganz

+0

也许它的行为就好像没有返回任何东西,因为没有返回。你是否打开了浏览器调试器,并在回调函数上设置了一个断点,并实际检查了数据对象以查看其中是否有内容? –

回答

0

在您传递给$.each的匿名函数中,未定义data。相反,您应该将两个变量传递给该函数。喜欢的东西:

$.each(data, function (key, item) { 
    alert(item); 
    $("#users-list").append(
     $("<option></option>").text(item.FullName).val(item.Id)); 

}); 

http://api.jquery.com/jQuery.each/

+0

对不起,有点困惑。在这种情况下什么是“关键”? – Shenaniganz

+0

关键是你以前叫'item'。这是你正在迭代的地图的关键。如果您发布了JSON结构,它可能会有所帮助。 –

相关问题