MVC jQuery ajax GET即使在错误时也返回成功

MVC jQuery ajax GET returns success even on error

本文关键字:错误 返回 成功 jQuery ajax GET MVC      更新时间:2023-09-26

我的项目有一个ajax get函数:

$('#DetailMaxGuest').change(function () {
        var result = $('#DetailMaxGuest').val();
        var resultparse = parseInt(result);
        var resultid = $('#resultid').val();
        $('#DetailMaxGuest option:selected').val(result).attr('selected', 'selected');
        var message = {'resultid':resultid, 'data':resultparse};
        $.ajax({
            type: 'GET',
            url: '/Product/GetMaxGuest',
            data: message,
            success: function (data, success) {
                $('#reservation-result').html(success).fadeIn(2000);
            },
            error: function (data, error) {
                $('#reservation-result').html(error).fadeIn(2000);
            }
        });
    });

和My controller;

public JsonResult GetMaxGuest(int? data,Guid? resultid)
        {
            var appid =resultid;
            System.Threading.Thread.Sleep(500);
            var firstOrDefault = _bb.Aparts.FirstOrDefault(m => m.ApartID == appid);
            if (firstOrDefault != null)
            {
                var maxguest = firstOrDefault.ApartMaxGuest;
                if (data > maxguest)
                {
                    return Json(new { error=true, msg="Basarisiz" },JsonRequestBehavior.AllowGet);
                }
                if (data <= maxguest)
                {
                    return Json(new { success = true, msg = "Basarili" },JsonRequestBehavior.AllowGet);
                }
            }
            return Json(new { error = true, msg = "Basarisiz" }, JsonRequestBehavior.AllowGet);
        }

和开始传输返回错误:

{"error":true,"msg":"Basarisiz"}

但在我的页面上写着success。为什么我没有看到错误信息?

返回包含错误消息的json 将不会使您获得错误回调

你需要这样做-

$.ajax({
        type: 'GET',
        url: '/Product/GetMaxGuest',
        data: message,
        dataType:'json',
        success: function (data) {
            if(!data.error){
             $('#reservation-result').html("Success :" + data.msg).fadeIn(2000);
            }
            else{
              $('#reservation-result').html("Error :" +data.msg).fadeIn(2000);
            }
        },
        error: function (data, error) {
        }
});

设置数据类型为json:

   $.ajax({
        type: 'GET',
        url: '/Product/GetMaxGuest',
        data: message,
        dataType: 'json',
        success: function (data) {
            if (data.error) {
               $('#reservation-result').html(data.msg).fadeIn(2000);
            } else {
               $('#reservation-result').html('success').fadeIn(2000);
            }
        },
        error: function (data, error) {
            // you don't have to do this
            // $('#reservation-result').html(error).fadeIn(2000);
        }
    });