AJAX没有调用所需的C#控制器方法
本文关键字:控制器 方法 调用 AJAX | 更新日期: 2023-09-27 18:02:54
所以我在这个问题上已经坚持了一段时间,并且对使用AJAX还很陌生,我遇到的问题是,当我在应该调用的C#方法上设置断点时,下面的AJAX永远不会到达,也不会显示错误。
函数getCheckBoxes
在我逐步了解FireBug的情况时被调用和执行。
第二部分将是我试图用AJAX执行的C#方法,我去掉了里面的代码,因为它甚至没有到达它,所以它不会成为问题。它包含在TestScriptResultsController
中。我尝试过POST
和GET
两种类型。如有任何帮助,我们将不胜感激。
getCheckBoxes = function getCheckBoxes () {
//var firstDate = '@Model.FirstDate';
//var lastDate = '@Model.LastDate';
var fDateChanged = $("#FirstDate").datepicker('getDate');
var lDateChanged = $("#LastDate").datepicker('getDate');
var platformConfig = '@Model.PlatformConfigSelected';
var triggered = '@Model.TriggeredSelected';
$.ajax({
url: '@Url.Action("BranchCheckBoxes", "TestScriptResults")',
type: 'POST',
data: { fDateChanged: firstDate, lDateChanged: lastDate, platformConfig: platformConfig, triggered: triggered },
success: function (data) { $('#checkBoxes').html(data); }
});
}
控制器动作:
public ActionResult BranchCheckBoxes(DateTime firstDate, DateTime lastDate, string platformConfig, string triggered)
{
return PartialView(trs);
}
-
对于
data
,您的JavaScript对象初始值设定项语法是向后的。尝试使用:data: { firstDate: fDateChanged, lastDate: lDateChanged, platformConfig: platformConfig, triggered: triggered }
正确的语法是{ 'key': 'value' }
-
除非您在Razor页面中,否则
'@Url.Action("BranchCheckBoxes", "TestScriptResults")'
将不起作用。确保您的JavaScript位于.cshtml或.vbhtml页面内,或者(最好(使用url: '/TestScriptResults/BranchCheckBoxes/'
-
BranchCheckBoxes()
需要有一个[HttpPost]
属性,因为MVC默认为控制器操作的GET:[HttpPost] public ActionResult BranchCheckBoxes (...)
感谢Jason向我指出HTTP响应,这让我找到了答案,因为.datepick('getDate'(返回了一个对象而不是字符串,因此在它进入我设置的ActionResult方法之前就中断了。我改变了从日期选择器(AJAX调用中的数据行(检索值的方式,并更改了actionResult参数,它现在可以工作了。我是StackOverflow的新手,他的评论对找到答案很有帮助,有什么办法可以给Jason一些意见吗?
日期选择器的JavaScript:
$(function () {
$("#FirstDate").datepicker()
.on("input change", function (e) {
var firstDateChanged = $(this).val();
firstDateChange();
});
});
AJAX更改:
data: { firstDate: firstDateChanged, lastDate: lastDateChanged, platformConfig: platformConfig, triggered: triggered },
控制器更改:
public ActionResult BranchCheckBoxes(string firstDate, string lastDate, string platformConfig, string triggered)
{ }