gpt4 book ai didi

javascript - 如何避免在 AJAX 中的 if/else 语句中重复代码

转载 作者:行者123 更新时间:2023-11-29 10:02:38 27 4
gpt4 key购买 nike

我正在尝试在 Ajax 中执行 if/else ,但是正如您在我的脚本中看到的那样,我正在重复我的代码,我认为最好的方法是将其归档在一行中或在 Ajax 之前执行 if/else 和老实说,我不知道我应该怎么做任何人都可以帮助我或指出正确的方向!
提前致谢:)

function RMAfunction() {
var model = {
Serienummer: $("#notavailable").val(),
SelectedSerieText: $("#ddlSerial option:selected").text(),
Kundenavn: $("#Kundenavn").val(),
Ordrenummer: $("#Ordrenummer").val()
}
if (model.Serienummer === 'not available') {
$.ajax({
type: 'POST',
url: '@Url.Action("ProcessRequestRMA", "Account")',
dataType: 'json',
data: {
Serienummer: model.Serienummer,
Kundenavn: model.Kundenavn,
Ordrenummer: model.Ordrenummer,
},
success: function (status) {
if (status) {

status.Serienummer = model.Serienummer;
status.Kundenavn = model.Kundenavn;
status.Ordrenummer = model.Ordrenummer;
}
else {
alert("Something Wrong");
}
},
error: function () {
console.log('something went wrong - debug it!');
}
});
}
else {
$.ajax({
type: 'POST',
url: '@Url.Action("ProcessRequestRMA", "Account")',
dataType: 'json',
data: {
Serienummer: model.SelectedSerieText,
Kundenavn: model.Kundenavn,
Ordrenummer: model.Ordrenummer
},
success: function (status) {
if (status) {
status.Serienummer = model.SelectedSerieText;
status.Kundenavn = model.Kundenavn;
status.Ordrenummer = model.Ordrenummer;
}
else {
alert("Something Wrong");
}
},
error: function () {
console.log('something went wrong - debug it!');
}
});

}
}

最佳答案

唯一的变化是在 model 的属性中使用 Serienummer 还是 SelectedSerieText 是基于 Serienummer 的原始值。因此,您可以在使用该值的地方使用三元表达式。试试这个:

function RMAfunction() {
var model = {
Serienummer: $("#notavailable").val(),
SelectedSerieText: $("#ddlSerial option:selected").text(),
Kundenavn: $("#Kundenavn").val(),
Ordrenummer: $("#Ordrenummer").val()
}
var hasSerieNummer = model.Serienummer === 'not available';

$.ajax({
type: 'POST',
url: '@Url.Action("ProcessRequestRMA", "Account")',
dataType: 'json',
data: {
Serienummer: hasSerieNummer ? model.Serienummer : model.SelectedSerieText,
Kundenavn: model.Kundenavn,
Ordrenummer: model.Ordrenummer,
},
success: function(status) {
if (status) {
status.Serienummer = hasSerieNummer ? model.Serienummer : model.SelectedSerieText;
status.Kundenavn = model.Kundenavn;
status.Ordrenummer = model.Ordrenummer;
} else {
alert("Something Wrong");
}
},
error: function() {
console.log('something went wrong - debug it!');
}
});
}

通过在 model 对象中使用一个函数来包含确定要返回哪个标识符的逻辑,这可能会进一步减少:

function RMAfunction() {
var model = {
Serienummer: $("#notavailable").val(),
SelectedSerieText: $("#ddlSerial option:selected").text(),
Kundenavn: $("#Kundenavn").val(),
Ordrenummer: $("#Ordrenummer").val(),
GetIdentifier: function() {
return this.Serienummer === 'not available' ? this.Serienummer : this.SelectedSerieText;
}
}

$.ajax({
type: 'POST',
url: '@Url.Action("ProcessRequestRMA", "Account")',
dataType: 'json',
data: {
Serienummer: model.GetIdentifier(), // usage here
Kundenavn: model.Kundenavn,
Ordrenummer: model.Ordrenummer,
},
success: function(status) {
if (status) {
status.Serienummer = model.GetIdentifier(); // and here
status.Kundenavn = model.Kundenavn;
status.Ordrenummer = model.Ordrenummer;
} else {
alert("Something Wrong");
}
},
error: function() {
console.log('something went wrong - debug it!');
}
});
}

关于javascript - 如何避免在 AJAX 中的 if/else 语句中重复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52180662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com