我在JQuery Ajax中有工作代码,但是有人告诉我必须使用本机JS代码才能使用它,而且我对使用本机JS进行Ajax并不十分熟悉,并且大多数Internet示例是基本的。基本上,我有这个对象:
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;
}
然后,我使用返回的新ID,并将其分配给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";
}
这将成功接受AJAX发布的JSON,并将其添加到数据库中。现在,当我尝试在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);
“ Narudzba”内部的所有值都是空的,尽管对象在发布到控制器之前显然具有所有正确的值。帮助将不胜感激。
答案 0 :(得分:0)
您在Content-Type
中缺少xhr request
设置。
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
这应该可以解决您的问题。
希望这会有所帮助!