Добавление записи в таблицу и на страницу с помощью ajax - PullRequest
0 голосов
/ 23 декабря 2018

Я изучаю JavaScript.Получил ajax запросы.Все отлично работает в MVC.Я решил попробовать на веб-формах.Пытаясь разместить новую запись на странице, скажите, пожалуйста, что я делаю не так.Вот мой кодКод страницы выступает в качестве основного вида:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Tables.aspx.cs" Inherits="WebApplication1.Tables" %>

<!DOCTYPE html>
<script src="../../Scripts/jquery-1.8.0.min.js"></script>
<script src="../../Scripts/jquery.unobtrusive-ajax.js"></script>
<html lang="en">
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >
</head>

<body>
    <div>
        <table id="tab" class="table table-bordered">
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Author</th>
                    <th>Price</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1408</td>
                    <td>Stiven King</td>
                    <td>500</td>
                </tr>
            </tbody>
        </table>
    </div>

    <form id="form1" runat="server">
        <asp:TextBox ID="txbName" runat="server"></asp:TextBox>
        <asp:TextBox ID="txbAuthor" runat="server"></asp:TextBox>
        <asp:TextBox ID="txbPrice" runat="server"></asp:TextBox>
        <input id="btnAdd" type="submit" value="Добавить" />
    </form>
</body>
</html>


<script>
    $('#btnAdd').on('click', function () {
        $.ajax({
            type: "POST",
            url: "Tables.aspx/AddBook",
            data: JSON.stringify({
                "Name": $('#txbName').val(),
                "Author": $('#txbAuthor').val(),
                "Price": $('#txbPrice').val()
            }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (MyDT) {
                $('#tab tbody').append(MyDT);
            },
            error: function (xhr) {
                alert(xhr.statusCode)
            }
        });
    });
</script>

Код веб-метода, контроллер:

[WebMethod]
        public static string AddBook(string Name, string Author, int Price)
        {
            db = new Context();
            string html = "";
            Book book = new Book() { Name = Name, Author = Author, Price = Price };
            db.Books.Add(book);
            db.SaveChanges();

            html = GetHTMLRow(book);
            return html;
        }

И еще один способ получения HTML-кода для дальнейшего добавления записи на страницу, что-токак частичное представление, на которое собирается запись:

public static string GetHTMLRow(Book book)
        {

            string htmlRow = $"<tr><td>{book.Name}</td><td>{book.Author}</td><td>{book.Price}</td></tr>";
            return htmlRow;
        }

Мой код полностью работает, но по какой-то причине страница перезапускается.Но не должен ли ajax-запрос работать асинхронно, не касаясь страницы?В MVC все работает нормально.А почему бы и нет?Что может быть не так?

1 Ответ

0 голосов
/ 23 декабря 2018

когда вы нажимаете кнопку, она отправляет форму (потому что тип установлен на «отправить»).изменить его на «кнопку»

<input id="btnAdd" type="button" value="Добавить" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...