所以我已经坚持了一段时间并且使用AJAX相当新,我遇到的问题是当我在C#方法上设置一个断点时我应该调用它来调用它它永远不会到达,也不会显示任何错误。
当我逐步了解FireBug发生的事情时,正在调用并执行函数getCheckBoxes
。
第二部分将是我试图用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);
}
答案 0 :(得分:1)
data
的JavaScript对象初始值设定项语法是向后的。尝试使用:
data: { firstDate: fDateChanged, lastDate: lDateChanged, platformConfig: platformConfig, triggered: triggered }
正确的语法是{ 'key': 'value' }
'@Url.Action("BranchCheckBoxes", "TestScriptResults")'
将无效。确保您的JavaScript位于.cshtml或.vbhtml页面内,或(最好)使用url: '/TestScriptResults/BranchCheckBoxes/'
BranchCheckBoxes()
需要具有[HttpPost]
属性,因为MVC默认为控制器操作的GET:
[HttpPost]
public ActionResult BranchCheckBoxes (...)
答案 1 :(得分:0)
感谢Jason指出我的HTTP响应引导我得到答案,因为.datepick(' getDate')返回一个对象而不是一个字符串,因此在它可以进入ActionResult方法之前断开有安装。我改变了我从datepicker中检索值的方式,我在AJAX调用中的数据行,我改变了我的actionResult参数,现在它正在工作。有没有办法可以给Jason一些关于这个问题的点我是StackOverflow的新手,他的评论对于得到答案非常有帮助?
datePicker的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)
{ }