使用ajax请求从MVC中的控制器获取数据
问题描述:
我一直在试图从我的控制器中的方法获取数据。为了从控制器获取数据,我编写了AJAX代码,但似乎没有做这项工作(不是从控制器提取数据)。也许我在AJAX请求方法的控制器中丢失了一些东西。使用ajax请求从MVC中的控制器获取数据
我有两个下拉并排。我试图根据用户选择的第一个下拉列表选择从控制器获取数据来填充第二个下拉列表。
我真的很感谢这方面的一些指导或帮助。
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]
}));
};
});
}
<div class="editor-field">
<select id="dd1">
<option value="Default">Default</option>
<option value="PTDR">PT/DR</option>
<option value="All">All</option>
</select>
<select id="subselect"></select>
</div>
答
更改您的AJAX调用:它缺少控制器名称
$.ajax({
type: "json",
data: {id: 1},
url:'@Url.Action("ptdrloFilter","ControllerName")',
success: function(result) {
//
},
error:function(ex)
{
//
}
});
你还写drFilter(result)
但没有任何参数功能
感谢通知我 –
这可能或可能不重要。如果操作与调用的控制器在同一个控制器上,则不需要执行此操作 – Liam
您是否可以更详细地解释函数中的参数,因为我对ajax不熟悉。 – user5813072