【问题标题】:Ajax call asp.net mvc 5 controller, parameter return nullajax调用asp.net mvc 5控制器,参数返回null
【发布时间】:2021-07-01 03:19:00
【问题描述】:

我尝试使用 ajax 调用我的控制器。 但是当我到达控制器时我的参数返回 null 这是我的查看代码

function ajaxfunction(id) {
        var serviceURL = '/Users/AddWishList';
        alert("inside ajax");
        alert(id);
        $.ajax({
            type: "POST",
            url: serviceURL,
            data: roomID = id ,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: successFunc,
            error: errorFunc
        });

        function successFunc(data, status) {
            alert(data);
        }

        function errorFunc() {
            alert('error');
        }
    };

alert(id) 正确显示数据,但是当我到达控制器时它返回 null。 enter image description here

[HttpPost]
        public JsonResult AddWishList(string roomID)
        {
            wishList wish = new wishList();
            wish.roomID = roomID;
            var user = _context.UsersDB.Where(u => u.userName == HttpContext.User.Identity.Name).FirstOrDefault();
            wish.userID = user.userID.ToString();
            _context.wishListDB.Add(wish);
            _context.SaveChanges();
            return Json("Room added to your wish list",JsonRequestBehavior.AllowGet);
        }

而且返回信息也不能显示,也就是ajax里面的“数据”。 有人可以帮忙吗?

【问题讨论】:

    标签: ajax asp.net-mvc model-view-controller razor


    【解决方案1】:

    您必须将对象传递给控制器​​。替换:

    data: roomID = id ,
    

    data: JSON.stringify({'roomID' : id}) ,
    

    这应该可以正常工作。

    【讨论】:

    • 非常感谢
    【解决方案2】:

    在这种情况下使用 GET 要简单得多,但如果您仍想使用 POST,则必须使用 ViewModel

    public class ViewModel
    {
     public string  RoomID {get;set;}
    }
    

    并更改动作标题:

    [HttpPost]
     public JsonResult AddWishList(ViewModel viewModel)
     {
     var roomID=viewModel.RoomId;
    ....
    }
    
    

    使用这个 ajax 代码:

    function ajaxfunction(id) {
            var serviceURL = '/Users/AddWishList';
          
            $.ajax({
                type: "POST",
                url: serviceURL,
                data: {roomID = id} ,
                success: successFunc,
                error: errorFunc
            });
    
            function successFunc(data, status) {
                alert(data);
            }
    
            function errorFunc() {
                alert('error');
            }
        };
    

    如果您想使用 GET:

    [Route("{roomId}")]
     public JsonResult AddWishList(string roomID)
    

    和ajax

     var serviceURL = '/Users/AddWishList/'+id;
    
     $.ajax({
     type: "GET",
     url: serviceURL,
      success: successFunc,
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2020-10-12
      • 2017-03-05
      • 1970-01-01
      相关资源
      最近更新 更多