![](/img/trans.png)
[英]ASP.NET Core - Call controller method in javascript without Ajax
[英]ASP.NET controller method for ajax call
我有一个包含多选字符串列表的页面。 当我选择多个项目并点击应用时,我想进行ajax调用并传递值。 当我在控制器中调试方法时,参数为空。
家庭控制器
[HttpGet]
public string GetTopLogEvents(string[] filters)
{
// ........
return "";
}
scripts.js
$('.js-event-level-filter-apply').on('click', function() {
var $this = $(this);
var $filterList = $('.js-event-level-filter');
var filters = $filterList.val();
var obj = {
filters: []
};
$.each(filters, function(key, value) {
obj.filters.push(value);
});
$.ajax({
type: "GET",
url: '/Home/GetTopLogEvents',
data: obj.filters,
success: function(data) {
console.log(data);
}
});
});
如果我在控制器中放置一个断点,它将命中,但过滤器为空。 我究竟做错了什么?
可能是您需要“字符串化”您的数组。
我首先将ajax数据部分更改为如下所示:
data: {filters: obj.filters}
如果那行不通,我会尝试
data: {filters: stringify(obj.filters)}
后者的确切语法可能不正确,因此请检查一下。
您能打开浏览器,按F12键,然后在$ .ajax行上直接放置一个断点吗(在“源”选项卡中的文件中)。 然后,运行该方法。 当线程在断点处停止时,是否可以打开控制台选项卡,并键入“ obj.filters”并按Enter。
它说“未定义”吗?
查看您的代码,它“应该”是不确定的,但是那肯定是一个好的开始。
同样,对发送的信息进行字符串化(JSON.stringify()),然后执行JObject调用(c#)将其转换回对象数组也可能有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.