javascript - 重构 AJAX 帖子的功能:获取更改的字段 ID 并使用 AJAX 发布它的值
问题描述
我是一个新开发人员,问我的第一个 SO 问题:)。处理具有一些基于 ASP.NET MVC 中相应文本输入的计算字段的表单。本质上,从文本框中获取值,AJAX 将该值发布到控制器,执行计算,将该数据返回到只读计算字段。
我有以下代码用于此工作:
$("#volume").focusout(function () {
volume = $(this).val()
$.ajax({
type: "POST",
url: '/StaffingPlan/CalculatorAction',
data: { volume: volume },
dataType: "json",
success: function (data) {
console.log(data);
$("#selectorsNeeded").val(data);
}
});
});
$("#drops").focusout(function () {
drops = $(this).val()
$.ajax({
type: "POST",
url: '/StaffingPlan/CalculatorAction',
data: { drops: drops },
dataType: "json",
success: function (data) {
console.log(data);
$("#liftsNeeded").val(data);
}
});
});
在控制器中:
public ActionResult CalculatorAction(string volume, string drops)
{
int data = 0;
//one calculation performed for volume, but will be others to calculate
if (volume != null && volume != "")
{
data = Int32.Parse(volume) / 150 / 9;
}
//example of another calc
if (drops != null && drops != "")
{
data = Int32.Parse(drops) / 25 / 6;
}
return Json(data, JsonRequestBehavior.AllowGet);
}
这是可行的,但是,表单还有其他几个输入和计算字段。显然,有更好/更干的方法来编写它,而不是复制 .focusout 函数。只获取更改的字段 ID 并将值分配给适当的变量会很好。希望这是有道理的!任何方向将不胜感激。
解决方案
将您的代码更改为:
$("#volume").focusout(function () {
var data= { volume: $(this).val()},
var resultField= $("#selectorsNeeded");
calculateResult(data, resultField);
});
$("#drops").focusout(function () {
var data= { drops: $(this).val() },
var resultField= $("#liftsNeeded");
calculateResult(data, resultField);
});
function calculateResult (data, resultField) {
$.ajax({
type: "POST",
url: '/StaffingPlan/CalculatorAction',
data: data,
dataType: "json",
success: function (result) {
console.log(result);
resultField.val(result);
}
});
};
推荐阅读
- vba - 第一行数据未显示正确数据
- regex - 用于特定测试的 Mocha Grep Regex
- php - 在php中打印正确的日期
- python - Python 请求:如何确定 MaxRetries 异常的响应代码
- powerbi - 需要 PowerBI Datediff 协助
- rest - GrailsView 解析 jsonApi 发布数据 - Grails 团队是否在 jsonViews 中做通用解决方案?
- html - 链接到外部 url 的角度重定向到应用程序
- javascript - 在 Chrome 中查找并复制 onclick 行为?
- python - 如何通过代理自动连接到 Cloud SQL?
- angular - 引导工具提示标题属性不适用于 Angular 6