У меня есть несколько вариантов аякса в зависимости от потока взаимодействий на странице. Но это только переменные, которые меняются. Вот один из них:
$('#btn_skickaEnkel').bind('click', function () {
$.ajax({
type: 'POST',
url: '/Contact/IntresseAnmälan/',
dataType: 'json',
data: {
Namn: $('#namn').val(),
Mail: $('#mail').val(),
Info: $('#meddelande').val(),
Nivå: $('#nivå').find(":selected").text(),
IsEnkel: true,
Telefon: $('#nr').val(),
ID: function () {
var url = window.location.pathname;
var id = url.substring(url.lastIndexOf('/') + 1);
return id;
}
},
traditional: true
});
});
В моем контроллере я не могу перенаправить или вернуть другое представление. На данный момент данные JSON уже не актуальны, поскольку они уже сохранены в БД.
Мой контроллер:
public ActionResult IntresseAnmälan(BokningContainer bokning)
{
db = new DbContext();
//Saving some data to database(removed)
//Just determening the state of container obj.
if (bokning.IsEnkel)
{
//Geting som information from db (removed)
//Creating a mail (removed)
email.Send(bokning.Namn, bokning.Mail, body);
}
else
{
}
//db.SaveChanges();
//This part is not working, I think it beacuase of the Ajax
return View("IntresseAnmälan");
}
Представление не отображается, и я думаю, что это связано с ajax. Вид просто не отображается. Есть ли способ принудительно вернуть его и игнорировать ajax? Как я уже сказал, данные больше не нужны, потому что контент уже сохранен в БД.
Вы не можете визуализировать вид на ajax-вызове, просто вы можете использовать метод отправки формы или просто перенаправить его на желаемое действие на "succcess" ajax-вызова, как показано ниже:
$('#btn_skickaEnkel').bind('click', function () {
$.ajax({
type: 'POST',
url: '/Contact/IntresseAnmälan/',
dataType: 'json',
data: {
Namn: $('#namn').val(),
Mail: $('#mail').val(),
Info: $('#meddelande').val(),
Nivå: $('#nivå').find(":selected").text(),
IsEnkel: true,
Telefon: $('#nr').val(),
ID: function () {
var url = window.location.pathname;
var id = url.substring(url.lastIndexOf('/') + 1);
return id;
}
},
traditional: true,
success: function(result) {
window.location.href = '@Url.Action("action", "Controller")';
}
});
});
Я не мог поверить своим глазам, когда понял это "Багг". Проблема заключалась в том, что я в какой-то момент изменил представление на кнопку. Таким образом, форма никогда не отправлялась. Ну, по крайней мере, я немного узнал о взглядах и Ajax.
Извините за то, что вы не спешите.