繁体   English   中英

Ajax请求未将ID发布到控制器

[英]Ajax request not posting ID to controller

我已经将一个AJAX发布请求写入了我的deletewidget控制器,它可以很好地发布请求令牌,但是它似乎没有将widgetID传递给控制器​​。 我已经逐步执行了javascript代码,并将ID分配给变量widgetID很好,并且还在我的控制器中添加了一个断点,但它表示为null。

$(document).ready(function () {
    $('#columns').on('click', '.glyphicon.glyphicon-trash', function (event) {
        var panel = this;
        //get id here

        //toggle the modal
        $('#deleteWidgetModal').modal('show');
        var widgetID = $(this).closest('.panel.panel-default').attr('data-widgetid');

        document.getElementById('delete-widget').onclick = function (event) {
            event.stopPropagation();

            //anti forgery token
            //get the form
            var form = $('#__AjaxAntiForgeryForm');
            //from the form get the antiforgerytoken
            var token = $('input[name="__RequestVerificationToken"]', form).val();

            var URL = '/Dashboard/DeleteWidgetConfirmed';

            //we make an ajax call to the controller on click
            //because the controller has a AntiForgeryToken attribute
            //we need to get the token from the form and pass it with the ajax call.
            $.ajax({
                url: URL,
                data: {
                    __RequestVerificationToken: token,
                    id: widgetID   
                },
                type: 'POST',
                success: function(result){
                    var parentElement = $(panel).closest(".col-md-4.column");
                    var targetElement = $(panel).closest(".panel.panel-default");
                    targetElement.remove();

                    //parentElement.addClass("expand-panel");
                    checkEmptyPanelContainers();
                    $('#deleteWidgetModal').modal('hide');
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert("An error has occurred please contact admin");
                }
            })
        }
        return false;
    })
});

这是我的控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult DeleteWidgetConfirmed(int? id)
    {
        if(id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        WidgetModel widgetModel = db.widgets.Find(id);
        db.widgets.Remove(widgetModel);
        db.SaveChanges();
        return new EmptyResult();
    }

好像执行了两次ajax代码,我将return false上移了一层,它解决了问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM