Ajax призывает не обновлять базу данных SQL Server, связанную с веб-страницей ASP.NET MVC - PullRequest
0 голосов
/ 05 июля 2018

Следующие фрагменты кода являются разделами веб-страницы ASP.NET MVC, которую я создаю через сервер Azure. Страница содержит таблицу, которая связана с таблицей базы данных Microsoft SQL Server (действует как обновляющая копия таблицы базы данных), которую я также создал.

В настоящее время ручные изменения базы данных приводят к изменениям таблицы на веб-странице. У меня есть кнопка «Добавить», которая использует модальное с пользовательским вводом ('sbtn' в приведенном ниже коде для кнопки отправки модального), чтобы добавить строки как в веб-страницу, так и в таблицы базы данных. На моем локальном хосте эта кнопка успешно обновит обе таблицы, однако на сервере Azure эта кнопка никоим образом не влияет на таблицу базы данных, в таблицу на веб-странице добавляется (временная) строка, и ошибки не отображаются. Я не могу понять, почему таблица базы данных не будет обновляться при каждом нажатии кнопки.

Я пытаюсь получить кнопку для обновления таблицы базы данных. Любая помощь будет оценена. Я могу разместить дополнительный код (из связанных файлов), если это необходимо.

Часть скрипта:

// Add Button (opens modal)
btn.onclick = function () {
    addmodal.style.display = "block";
}

// Submit Button (updates tables and closes modal)
sbtn.onclick = function () {
            var table = document.getElementById("mainTable");
            var tag = document.getElementById("tag").value;
            var server = document.getElementById("server").value;
            var frequency = document.getElementById("frequency").value;
            var objInputCheckBox = document.createElement("input");
            objInputCheckBox.type = "checkbox";
            var newdata = { Tag: tag, Server: server, Frequency: frequency };
            var row = table.insertRow(-1);
            var cell1 = row.insertCell(0);
            var cell2 = row.insertCell(1);
            var cell3 = row.insertCell(2);
            var cell4 = row.insertCell(3);
            cell1.appendChild(objInputCheckBox);
            cell2.innerHTML = tag.replace(/\s+/g, '');
            cell3.innerHTML = server.replace(/\s+/g, '');
            cell4.innerHTML = frequency.replace(/\s+/g, '');
            $.ajax({
                type: "POST",
                url: "@Url.Content("~/Home/Index/AddRow")",
                data: newdata,
                success: function (data) {
                    addmodal.style.display = "none";
                },
                error: OnError
            });
}

Контроллер:

public ActionResult AddRow(TableDataWeb newData)
{
        using (var dbContext = new TableDB())
        {
            dbContext.TData.Add(newData);
            dbContext.SaveChanges();
            return RedirectToAction("Index");
        }
}

1 Ответ

0 голосов
/ 06 июля 2018

Я использую Url.Action для моих AJAX-путей. Попробуйте это вместо "@ Url.Content (" ~ / Home / Index / AddRow ")":

  var url = "@Url.Action("AddRow", "Home")";
  $.ajax({
            type: "POST",
            url: url,
            data: newdata,
            success: function (data) {
                addmodal.style.display = "none";
            },
            error: OnError
        });

Я предполагаю, что "Home" - это имя вашего контроллера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...