У меня есть рабочий код в JQuery Ajax, однако мне сказали, что я должен использовать нативный код JS, чтобы использовать его, и я не очень знаком с использованием нативного JS для ajax, и большинство примеров в Интернете основные. В основном, у меня есть этот объект:
var Narudzba =
{
SifraNarudzbe: "AAA",
DatumNarudzbe: "",
Osigurano: document.getElementById("checkOsiguranje").value,
BrzaDostava: document.getElementById("checkBrza").value,
KlijentId: document.getElementById("klijentid").value,
Adresa: AdresaVar,
StatusNarudzbeID: 2,
Primaoc: PrimaocVar,
VrijemeIsporuke: null,
CijenaNarudzbe: UkupnaCijena,
NacinPlacanja: parseInt(document.getElementById("NacinPlacanja_Select").value)
};
Который я пытаюсь опубликовать на моем контроллере. Вот как выглядит мой рабочий код в Jquery Ajax:
$.ajax({
url: "/klijentarea/klijent/SnimiNarudzbu",
data: Narudzba,
type: 'POST',
success: function (data) {
for (var i = 0; i < stavke_niz.length; i++) {
stavke_niz[i].NarudzbeId = parseInt(data);
}
stavke_niz = JSON.stringify(stavke_niz);
$.ajax({
url: "/klijentarea/klijent/SnimiStavke",
type: "POST",
dataType: "json",
data: stavke_niz,
contentType: 'application/json',
success: function (data) {
if (data === true) {
var id = document.getElementById("klijentid").value;
window.location.href = '/KlijentArea/Klijent?id=' + id;
}
}
});
}
});
По сути, он создает заказ (Narudzba) со всеми видами деталей, отправляет его на этот контроллер:
[HttpPost]
public int SnimiNarudzbu(Narudzbe Narudzba)
{
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var stringChars = new char[8];
var random = new Random();
for (int i = 0; i < stringChars.Length; i++)
{
stringChars[i] = chars[random.Next(chars.Length)];
}
var finalString = new String(stringChars);
Narudzba.SifraNarudzbe = finalString;
Narudzba.DatumNarudzbe = DateTime.Now;
ctx.Primaoci.Add(Narudzba.Primaoc);
ctx.Naruzbee.Add(Narudzba);
ctx.SaveChanges();
int newid = Narudzba.Id;
return newid;
}
Затем я использую возвращенный новый идентификатор и назначаю его всем объектам внутри stavke_niz, который представляет собой массив списков заказов, который создается в другом месте кода, и требует OrderID перед добавлением в базу данных (я могу добавить этот код а также при необходимости). Затем массив с обновленными идентификаторами OrderID будет отправлен на этот контроллер:
[HttpPost]
public string SnimiStavke(IEnumerable<StavkaNarudzbe> stavke_niz)
{
if (stavke_niz != null)
{
ctx.StavkeNarudzbi.AddRange(stavke_niz);
ctx.SaveChanges();
return "true";
}
return "false";
}
Который успешно принимает JSON, опубликованный с AJAX, и добавляет материал в базу данных. Теперь, когда я пытаюсь опубликовать в Native, примерно так:
var xhr = new XMLHttpRequest();
xhr.onload = function () {
if (xhr.status === 200 && this.readyState === 4)
{
alert(this.getAllResponseHeaders());
}
};
xhr.open('POST', '/klijentarea/klijent/SnimiNarudzbu', true);
xhr.send(Narudzba);
Все значения внутри «Нарудзба» равны нулю, несмотря на то, что объект явно имеет все правильные значения перед отправкой в контроллер. Помощь будет принята с благодарностью.