首页 > 解决方案 > 为什么我收到状态为 500 的错误(内部服务器错误)

问题描述

我有一个问题,不幸的是我看不到错误。问题如下。我创建 Delete 方法并在AJAX单击按钮时调用该方法。但是当我转到索引页面并尝试删除项目时,我只收到我的 swall aller 显示的错误消息。

error: function (data) {
                        swal("Oops", "Something went wrong!", "error");
                    }

到目前为止我所做的,我Delete Action在我的控制器中创建

[HttpPost,ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
    Language language = db.Languages.Find(id);
    db.Languages.Remove(language);
    db.SaveChanges();
    return RedirectToAction(nameof(Index));
}

在我的Index Page我创建了这个:

<div class="panel panel-flat">
    <div class="panel-body">
        <table class="table datatable-responsive datatable-languages">
            <thead>
                <tr class="bg-blue">
                    <th>
                        Language Name
                    </th>
                    <th>
                        Country Code (Flag)
                    </th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model)
                {
                    <tr id="tr-id-@item.language_id">

                        <td>
                            @Html.DisplayFor(modelItem => item.name)
                        </td>

                        <td>
                            @Html.DisplayFor(modelItem => item.code)
                        </td>


                        <td>
                            <ul class="icons-list text-left">
                                <li class="text-primary-600"><a href="~/Languages/Edit?Id=@item.language_id"><i class="icon-pencil7"></i></a></li>
                                <li class="text-danger-600"><a class="delete_languages" href="javascript:;" data-id="@item.language_id"><i class="icon-trash"></i></a></li>
                            </ul>
                        </td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
</div>

我的 AJAX 调用:

<script>
    $('.datatable-languages').DataTable({
        dom: 'Bfrtip',
        columnDefs: [
            {
                responsivePriority: 1,
                targets: -1
            },
            {
                targets: [-1],
                orderable: false,
                searchable: false,
                printable: false,
                width: "120"
            }
        ]
    });

    $(document).on('click', '.delete_languages', function () {
        var myId = $(this).attr('data-id');
        console.log(myId);
        var parent = $(this).parent().parent().parent().parent();
        swal({
            title: "Are you sure?",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#FF7043",
            confirmButtonText: "Yes, delete it!",
            closeOnConfirm: false,
            showLoaderOnConfirm: true,
        },
            function () {
                $.ajax({
                    type: "post",
                    url: "/Languages/Delete",
                    data: { id: myId },
                    success: function () {
                        parent.fadeOut('slow', function () { $(this).remove(); $('.child').remove() });
                        setTimeout(function () { swal("Deleted!", "Record deleted successfully!", "success"); }, 2000);
                    },
                    error: function (data) {
                        swal("Oops", "Something went wrong!", "error");
                    }
                });

            })
    });
</script>

之前的一个符号,我尝试删除 AJAX 调用,并在我的索引页面中添加了这行代码,它可以工作

<td>
    @Html.ActionLink("Edit", "Edit", new { id = item.BlogId }) <br />
    @Html.ActionLink("Details", "Details", new { id = item.BlogId }) <br />
    @Html.ActionLink("Delete", "Delete", new { id = item.BlogId })
</td>

谁能帮助我并告诉我哪里出错了,因为我找不到,也不知道从哪里开始寻找。一切看起来都不错,但无法删除项目,在控制台中我收到错误消息

内部服务器错误 (500)

标签: c#sql-serverajaxasp.net-mvcdatatable

解决方案


你必须使用

 return Json(new { success = true },JsonRequestBehavior.AllowGet);

删除 ajax 后将返回成功方法,但删除后您正在尝试重定向它,因此,它给您 500 的错误。Ajax 具有它不会重新加载您的页面并执行后端任务然后您可以重新加载的属性您要更新的列表。


推荐阅读