簡體   English   中英

如何在AJAX POST之后重新加載視圖

[英]How to reload view after AJAX POST

作為AJAX的新手,我遇到了這個問題,沒有運氣可以解決。 我希望在ajax發布以查看對象后刷新我的表,我嘗試過的一切都是徒勞的。

假設ajax響應是JSON結果,以避免發布我的OnPost()代碼。 我使用ajax發送產品的ID ,然后使用該ID刪除產品

然后,我調用OnGet()用來填充返回更新列表的表的相同方法。 在chrome調試工具中,我看到響應成功返回更新列表。 我只是不知道如何使它回到我的清單。 在此先感謝大家。

    @Html.AntiForgeryToken()
<table id="shoppingBag" class="table">
    <thead>
        <tr>
            <th scope="col">Item</th>
            <th scope="col">Price</th>
            <th scope="col">Quantity</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model.ShoppingBagItems)
        {
            <tr>
                <td>
                    @item.Product.Name
                </td>
                <td>
                    @item.Price.ToString("C")
                </td>
                <td>
                    <input value="@item.Quantity" size="1" maxlength="1" class="text-center" />
                </td>
                <td>
                        <button onclick="remove(@item.Product.Id.ToString())" class="close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                </td>
            </tr>
        }
    </tbody>
</table>

<script>
    function remove(id) {
        $.ajax({
            type: 'POST',
            url: 'ShoppingBag?handler=Delete',
            headers: {
                "XSRF-TOKEN": $('input:hidden[name="__RequestVerificationToken"]').val()
            },
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            data: ''+id+'',
            sucess: function (response) {
                append_json(response);
            }
        });
    }

    function append_json(data){
        var table = document.getElementById('shoppingBag');
        data.forEach(function(object) {
            var tr = document.createElement('tr');
            tr.innerHTML = '<td>' +
                object.product.name +
                '</td>' +
                '<td>' +
                object.price +
                '</td>' +
                '<td>' +
                object.quantity +
                '</td>';
            table.appendChild(tr);
        });
    }
</script>

在此append_json(response);之后的Ajax成功方法中append_json(response); 添加以下代碼以刷新表

$("#shoppingBag").load(window.location + " #shoppingBag");

更改:

var table = document.getElementById('shoppingBag');

至:

var table = $('#shoppingBag tbody');

更改:

table.appendChild(tr);

至:

table.append(tr);

您將數據附加到主<table>如果您檢查表,則可以看到附加的html。,但是您需要為此在主體中附加數據,可以使用$("#shoppingBag tbody").append(tr);

或者您可以像<tbody id="myTestTableBody">一樣將id添加到<body> <tbody id="myTestTableBody">並將其用於JavaScript

function append_json(data){
        var table = document.getElementById('myTestTableBody');
        data.forEach(function(object) {
            var tr = document.createElement('tr');
            tr.innerHTML = '<td>' +
                object.product.name +
                '</td>' +
                '<td>' +
                object.price +
                '</td>' +
                '<td>' +
                object.quantity +
                '</td>';
            table.appendChild(tr);
        });
    }

我添加了一個示例代碼,該代碼如何將數據追加到現有表中

 var page=1; function AddData() { $.ajax({ url: "https://reqres.in/api/users?page="+page, type: "GET", success: function(response){ append_json(response.data); } }); page++; } function append_json(data){ data.forEach(function(object) { var tr = document.createElement('tr'); tr.innerHTML = '<td>' + object.first_name + '</td>' + '<td>' + object.last_name + '</td>' + '<td>' + '<img src ='+object.avatar +' width="50px" height="50px" />'+ '</td>'; $("#shoppingBag tbody").append(tr); }); } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="button" value="Add Data" onclick="AddData()"> <table id="shoppingBag" class="table"> <thead> <tr> <th scope="col">Item</th> <th scope="col">Price</th> <th scope="col">Quantity</th> </tr> </thead> <tbody> </tbody> </table> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM