如何使用 ajax 请求从 asp.net mvc 中的控制器获取数据
How to use ajax request to get data from controller in asp.net mvc
我是 ajax 的新手。
我正在尝试从我的控制器中的方法获取数据,我已经编写了 ajax 代码但似乎没有完成这项工作(没有从控制器中提取数据)也许我也遗漏了一些东西在 ajax 请求的控制器中。
我有两个下拉菜单,我试图根据另一个下拉菜单的选择来填充一个下拉框,我试图从我的控制器中的一个方法中更正数据,但我不知道该怎么做。
我真的很感激在这件事上的一些指导或帮助
谢谢
public ActionResult ptdrFilter(int id)
{
//IUnitOfWork uow = DataAccess.GetUnitOfWork();
using (ManageProductTemplate ptLogic = new ManageProductTemplate(ref uow))
{
List<ProductTemplate> currentpt = ptLogic.GetBy(x => x.ProductTemplateID == id);
List<string> pt = new List<string>();
foreach (var item in currentpt)
{
pt.Add(item.DistributionRule.Name);
}
return Json(new {
pt
} , JsonRequestBehavior.AllowGet);
}
}
function drFilter() {
$.ajax({
type: "json",
data: {id: 1},
url:"/ptdrFilter/",
success: function(result) {
drFilter(result);
}
});
var dataInJSONForm = JSON.stringify(sampleData);
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)
function drFilter() {
$.ajax({
type: "json",
data: {id: 1},
url:"/ptdrFilter/",
success: function(result) {
drFilter(result);
}
});
...
将产生一个无限循环。当 ajax 调用完成(成功)时,它会再次调用 drFilter(),这将立即再次调用 ajax,依此类推。
2) 我认为它失败了,因为 URL 是错误的。在评论中,您提到了 404 Not Found 错误 - 这意味着它到达了错误 URL。 MVC 使用 URL 路由,所以最好让 MVC 为你生成 URL。您可以使用 HTML 助手来执行此操作,如下所示:
url: @Url.Action("ptdrFilter")
您的浏览器还报告未定义 "sampleData" 变量。在您尝试将其传递给 JSON.stringify() 方法之前,您发布的代码中没有任何地方显示已定义或填充此变量。我猜这可能是您尚未删除的测试代码。
我是 ajax 的新手。
我正在尝试从我的控制器中的方法获取数据,我已经编写了 ajax 代码但似乎没有完成这项工作(没有从控制器中提取数据)也许我也遗漏了一些东西在 ajax 请求的控制器中。
我有两个下拉菜单,我试图根据另一个下拉菜单的选择来填充一个下拉框,我试图从我的控制器中的一个方法中更正数据,但我不知道该怎么做。
我真的很感激在这件事上的一些指导或帮助
谢谢
public ActionResult ptdrFilter(int id)
{
//IUnitOfWork uow = DataAccess.GetUnitOfWork();
using (ManageProductTemplate ptLogic = new ManageProductTemplate(ref uow))
{
List<ProductTemplate> currentpt = ptLogic.GetBy(x => x.ProductTemplateID == id);
List<string> pt = new List<string>();
foreach (var item in currentpt)
{
pt.Add(item.DistributionRule.Name);
}
return Json(new {
pt
} , JsonRequestBehavior.AllowGet);
}
}
function drFilter() {
$.ajax({
type: "json",
data: {id: 1},
url:"/ptdrFilter/",
success: function(result) {
drFilter(result);
}
});
var dataInJSONForm = JSON.stringify(sampleData);
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)
function drFilter() {
$.ajax({
type: "json",
data: {id: 1},
url:"/ptdrFilter/",
success: function(result) {
drFilter(result);
}
});
...
将产生一个无限循环。当 ajax 调用完成(成功)时,它会再次调用 drFilter(),这将立即再次调用 ajax,依此类推。
2) 我认为它失败了,因为 URL 是错误的。在评论中,您提到了 404 Not Found 错误 - 这意味着它到达了错误 URL。 MVC 使用 URL 路由,所以最好让 MVC 为你生成 URL。您可以使用 HTML 助手来执行此操作,如下所示:
url: @Url.Action("ptdrFilter")
您的浏览器还报告未定义 "sampleData" 变量。在您尝试将其传递给 JSON.stringify() 方法之前,您发布的代码中没有任何地方显示已定义或填充此变量。我猜这可能是您尚未删除的测试代码。