I'm trying to do if/else inside Ajax , but as you can see in my script I'm repeating my code and i think it is better way do archive this in one line or doing if/else before Ajax and to be honest i don't know how exactly should i do Can anyone please help me or point me in the right direction!
Thanks in advance :)
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!');
}
});
}
}
The only change is whether you use the Serienummer or SelectedSerieText in the properties of model based on the original value of Serienummer. As such, you can just use a ternary expression where that value is used. Try this:
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!');
}
});
}
This could potentially be further reduced by using a function in the model object to contain the logic which determines which identifier to return:
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!');
}
});
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With