我正在尝试使用以下代码在控制器中触发Action方法。
<script>
function updateSalary() {
var salary = $('#basicSalary').val();
var figure = $('#allowance').val();
$.ajax({
url: '@Url.Action("updateSalary","salary")',
type: "GET",
dataType: "JSON",
data: { salary: basicsalary, figure: allowance },
success: function (add) {
$('#basicSalary').val(salary)
}
})
}
</script>
剃刀:
<td>
@Html.DropDownListFor(model => model.allowance, Model.allowances, "--please choose an option--", new { @class = "form-control", @onchange = "updateSalary()" })
</td>
控制器:
public ActionResult updateSalary (int salary, string figure)
{
if (figure == "Transport")
{
try
{
allowance trans = hc.allowances.First(x => x.name == figure);
if (trans != null)
salary = +Convert.ToInt32(trans.amount);
else
throw new excep("Record not found");
}
catch
{
}
}
return Json(salary,JsonRequestBehavior.AllowGet);
}
当用户选择allowance
下拉列表时,基本上basicSalary
会被添加到网页上的allowance
字段中。我在updateSalary
dropdownList中更改选择时,在allowance
Action方法的括号中设置断点来检查javaScript是否在控制器中触发它。它没有开火。我无法弄清楚为什么。有人能看出原因吗?
答案 0 :(得分:1)
这里有一些拼写错误:
data: { salary: basicsalary, figure: allowance }
应该是:
data: { salary: salary, figure: figure }
给出您在updateSalary
javascript函数开头声明的变量的名称。
为了跟踪此类问题,我建议您使用浏览器的开发人员工具栏。例如,如果您使用的是Google Chrome浏览器,则可以单击 F12 将其激活,然后在Console
标签中查找javascript错误。此外,在处理与您一样的AJAX查询时,您可以查看Network
选项卡,该选项卡将显示发送到服务器的所有请求以及相应的响应。这可以很好地指出问题所在。
答案 1 :(得分:1)
您使用的是未定义的错误变量 basicsalary 和 allowance 。将变量名称从salary
更改为basicsalary
,将figure
更改为allowance
试试这个
var basicsalary = $('#basicSalary').val();
var allowance = $('#allowance').val();
$.ajax({
url: '@Url.Action("updateSalary","salary")',
type: "GET",
dataType: "JSON",
data: { salary: basicsalary, figure: allowance },
success: function (add) {
$('#basicSalary').val(add);
}
});