Ajax все равно обновляет страницу. ASP.NET Core

174
06 мая 2019, 05:40

Есть асинхронный запрос AJAX, который норм работает, данные в контроллер ходят без проблем и на контроллере тоже все норм работает. Контроллер обновляет данные пользователя. Но если это асинхронный запрос, то он не должен перезагружать страницу. Вот скрипт который срабатывает при загрузке страницы, Достаем данные и распаршиваем в таблицу. Все ок тут.

function getDataList() {
var serviceURL = '/api/ProfessorsApi/';
$.ajax({
    type: "GET",
    url: serviceURL,
    contentType: "application/json;",
    success: successFunc,
    error: errorFunc
});
function successFunc(data, status) {
    var obj = $.parseJSON(data);

Вот скрипт пост метода асинхронного аякс

function postData() {
let nameStudent = document.querySelector('[name="Name"]').value;
let surnameStudent = document.querySelector('[name="Surname"]').value;
let midlnameStudent = document.querySelector('[name="Midlname"]').value;
let emailStudent = document.querySelector('[name="Email"]').value;
let telephoneStudent = document.querySelector('[name="TelNumber"]').value;
let oldEmailStudent = document.querySelector('[name="OldEmail"]').value;
var parametrs = {
    Name: nameStudent, Surname: surnameStudent, Midlname: midlnameStudent,
    Email: emailStudent, TelNumber: telephoneStudent, OldEmail: oldEmailStudent
};
var serviceURL = '/api/ProfessorsApi/';
$.ajax({
    type: "POST",
    url: serviceURL,
    data: JSON.stringify(parametrs),
    contentType: "application/json;",
    //success: successFunc,
    //error: errorFunc
});
function successFunc(data, status) {
}
function errorFunc() {
}

И вот форма HTML асинхронного запроса которая на onclick отправляет на функцию potsData(). Она в диалоговом окне открывается бутстрапа.

<div id="myModalBox" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <form>
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                    <h4 class="modal-title">Редагувати</h4>
                </div>
                <div class="modal-body">
                    <div>
                        <label>Ім'я</label>
                        <input  name="Name" type="text" value="" class="form-control" />
                    </div>
                    <div>
                        <label>Прізвище</label>
                        <input  name="Surname" type="text" class="form-control" />
                    </div>
                    <div>
                        <label>По батькові</label>
                        <input  name="Midlname" type="text" class="form-control" />
                    </div>
                    <div>
                        <label>Email address</label>
                        <input  name="Email" type="email" class="form-control" />
                    </div>
                    <div>
                        <label>Tel Number</label>
                        <input  name="TelNumber" type="text" class="form-control" />
                    </div>
                    <div>
                        <input  name="OldEmail" type="password" class="form-control hidden" />
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Відмінити</button>
                    <input type="submit" onclick="postData()" value="Edit" class="btn btn-primary" />
                </div>
            </form>
        </div>
    </div>

Ну и на последок, контроллер

 [HttpPost]
    public async Task<string> Post([FromBody]UpdateUserViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = _userManager.FindByEmailAsync(model.OldEmail).Result;
            if (user != null)
            {
                user.Email = model.Email;
                user.Name = model.Name;
                user.Surname = model.Surname;
                user.Midlname = model.Midlname;
                var result = await _userManager.UpdateAsync(user);
                if (result.Succeeded)
                {
                    var studentUpdate = _db.ProfessorModel.FirstOrDefault(m => m.Email == model.OldEmail);
                    if (studentUpdate != null)
                    {
                        studentUpdate.Name = model.Name;
                        studentUpdate.Surname = model.Surname;
                        studentUpdate.Midlname = model.Midlname;
                        studentUpdate.TelNumber = model.TelNumber;
                        studentUpdate.Email = model.Email;
                        await _db.SaveChangesAsync();
                    }
                    //await _signInManager.SignInAsync(user, false);
                }
            }
        }
        return "Ok";
    }
Answer 1

Проблема решилась тем что просто нужно в HTML форме поменять тег input type="submit" на button. Оно ведь так и есть. Сабмит по идеи и должен перезагружать страницу. Поменял и все ок без перезагрузки все работает.

READ ALSO
Почему не работает Colorbox в ie8?

Почему не работает Colorbox в ie8?

Нужен плагин который сможет воспроизводить видео в ie8, нашел один - ColorboxтутВ документации пишет что поддержка есть: Compatible with: jQuery 1

139
Как убрать &ldquo;родной&rdquo; белый фон иконки, чтобы он не перекрывал фон родительского блока?

Как убрать “родной” белый фон иконки, чтобы он не перекрывал фон родительского блока?

Есть иконка-домикДомик черный, на белом фоне - это сама картинка

154
Vui CLI 3 как, куда и что делать?

Vui CLI 3 как, куда и что делать?

Хелп, ребят, устал шуршать документацию тк

132
Проверить развернут ли iframe на весь экран

Проверить развернут ли iframe на весь экран

Хотел узнать если ли какой то способ проверить развернут ли iframe на весь экран - в моем случае это iframe видео с ютюбаХотелось бы найти способ...

134