// FormData
var form = new FormData()
$(".save-links button").click(function () {
var val = GetValuesLink()
var storage = {
Mname: [
{ mname: "vk" },
{ mname: "tg" },
{ mname: "inst" },
{ mname: "facebook" }
],
Link: [
{ link: val.vk },
{ link: val.tg },
{ link: val.inst },
{ link: val.facebook }
]
}
var storageForSubmit = {
Mname: "",
Link: ""
}
for (var i = 0; i < storage.Link.length; i++) {
storageForSubmit.Mname = storage.Mname[i].mname
storageForSubmit.Link = storage.Link[i].link
form.append("Media", JSON.stringify(storageForSubmit))
SubmitDataLinks(storageForSubmit)
}
})
function SubmitDataLinks(storageForSubmit) {
$(document).ready(function(){
$.ajax({
type: "POST",
url: "@Url.Action("SaveFile")",
data: form,
processData: false,
contentType: false,
success: function () {
console.log("Успешно!")
},
error: function () {
console.log("Ошибка!")
}
})
})
}
function GetValuesLink() {
var vk = document.querySelector(".link-vk input").value
var tg = document.querySelector(".link-tg input").value
var inst = document.querySelector(".link-inst input").value
var facebook = document.querySelector(".link-facebook input").value
return {
vk: vk,
tg: tg,
inst: inst,
facebook: facebook
}
}
[HttpPost]
public void SaveFile(UploadMedia Medium)
{
Console.WriteLine(Medium.media);
}
public class UploadMedia
{
public string? media { get; set; }
}
var storage = { // Зачем вообще такая табличная форма нужна?
Mname: [
{ mname: "vk" },
{ mname: "tg" },
{ mname: "inst" },
{ mname: "facebook" }
],
Link: [
{ link: val.vk },
{ link: val.tg },
{ link: val.inst },
{ link: val.facebook }
]
}
var storageForSubmit = { // Почему один и тот же объект постоянно перезаписывается?
Mname: "",
Link: ""
}
for (var i = 0; i < storage.Link.length; i++) {
storageForSubmit.Mname = storage.Mname[i].mname // А не проще было бы for-of сделать?
storageForSubmit.Link = storage.Link[i].link
form.append("Media", JSON.stringify(storageForSubmit))
SubmitDataLinks(storageForSubmit) // Вот сюда в итоге один и тот же объект будет отправляться
}
function SubmitDataLinks(storageForSubmit) { // storageForSubmit даже не используется
$(document).ready(function(){// зачем оно в .ready обёрнуто???
$.ajax({
type: "POST",
url: "@Url.Action("SaveFile")",
data: form, // Поведение при использовании FormData недокументировано
processData: false,
contentType: false, // Поведение при contentType=false недокументировано
success: function () {
console.log("Успешно!")
},
error: function () {
console.log("Ошибка!")
}
})
})
}
[HttpPost]
public void SaveFile([FromBody] UploadMedia data)
{
Console.WriteLine(data);
}
public record UploadMedia(string MediaName, string MediaLink);
document.addEventListener('DOMContentLoaded', () => {
const saveFileEndpoint = '@Url.Action("SaveFile")';
const readLinks = () => ({
"vk": document.querySelector("input.link-vk").value,
"tg": document.querySelector("input.link-tg").value,
"inst": document.querySelector("input.link-inst").value,
"facebook": document.querySelector("input.link-facebook").value,
})
const submitLinks = async (links) => {
for (const mediaWithLink of links) {
await fetch(saveFileEndpoint, {
method: "POST",
body: JSON.stringify(mediaWithLink),
headers: {
"Content-Type": "application/json"
}
})
}
}
const onSaveLinks = async () => {
const allLinks = readLinks();
const linksList = Object.keys(allLinks).map(key => ({ "MediaName": key, "MediaLink": allLinks[key] }));
try {
await submitLinks(linksList);
console.log("Ссылки сохранены");
} catch (e) {
console.error(`Произошла ошибка при отправке ссылок: ${e.message}`);
}
};
document.querySelector("button.save-links").addEventListener("click", onSaveLinks);
});