使用ajax请求从mvc中的控制器获取数据

时间:2016-09-16 10:10:41

标签: javascript jquery json ajax asp.net-mvc

我一直在尝试从我的控制器中的方法中获取数据。我编写了AJAX代码以便从控制器获取数据,但它似乎没有完成任务(不从控制器中提取数据)。也许我在AJAX请求方法的控制器中遗漏了一些东西。

我有两个下拉列表。我试图通过根据用户选择的第一个下拉列表的选择从控制器获取数据来填充第二个下拉列表。

我真的很感激这方面的一些指导或帮助。

this.props.initialize
public ActionResult ptdrloFilter(int id)
{
    int customerId = (int)System.Web.HttpContext.Current.Session["CustomerID"];
    IUnitOfWork uow = DataAccess.GetUnitOfWork();
    using (ManageProductTemplate ptLogic = new ManageProductTemplate(ref uow))
    {
        List<ProductTemplate> currentpt = ptLogic.GetBy(x => x.ProductTemplateID == id);
        List<string> returnDisString = new List<string>();
        List<string> pt = new List<string>();

        var getDRString = (from drule in Drulelogic.GetCustomerProdIndexString(customerId, id).List
                           select new { drule.Name, drule.DistributionRuleID }).ToList();

        foreach (var item in getDRString)
        {
            returnDisString.Add(item.Name);
        }
        returnDisString = returnDisString.Distinct().ToList();
        return Json(returnDisString, JsonRequestBehavior.AllowGet);               
    }
}
function drFilter() {
    $.ajax({
        type: "json",
        data: { id: 1 },
        url: @Url.Action("ptdrloFilter"),
        success: function(result) {
            drFilter(result);
        }
    });

    var dataInJSONForm = JSON.stringify(result);
    var datainJSObjectForm = JSON.parse(dataInJSONForm);

    $('#dd1').on('change', function (e) {
        var valueChosenInddl2 = $(this).val();
        var options = datainJSObjectForm[valueChosenInddl2];
        var $subselect = $('#subselect');
        $subselect.children().detach();

        for (var property in options) {
            $subselect.append($('<option>', { 
                value: property, 
                text: options[property] 
            }));
        };
    });
}

1 个答案:

答案 0 :(得分:1)

更改您的ajax调用:它缺少控制器名称

$.ajax({
    type: "json",
    data: {id: 1},
    url:'@Url.Action("ptdrloFilter","ControllerName")',
    success: function(result) {
      //
    },
    error:function(ex)
    {
       //
    }
});

您还写了drFilter(result)功能中没有任何参数