Ajax Успешная функция не вызывается после возврата из контроллера? MVC - PullRequest
1 голос
/ 05 апреля 2020

Мой jQuery код выглядит следующим образом:

$("#create").click(function(e) {  
    var myModel =
                {
                    "TribeName": $('#TribeName').val()
                };

var jsonToPost = JSON.stringify(myModel);
$.ajax({
    url: '/Home/Create/',
    async: true,
    processData: false,
    data: jsonToPost,
    type: 'post',
    contentType: 'application/json; charset=utf-8',
    success: function (data) {
        if (data) {
            alert('asd');
            $('#butn').trigger('click');
        }
    },
    error: function (err) {
        if (!$('.modal-header').hasClass('alert-danger')) {
            $('.modal-header').removeClass('alert-success').addClass('alert-danger');
            $('.delete-confirm').css('display', 'none');
        }
        $('.success-message').html(err.statusText);
    }
});
})

Вот мой контроллер:

public ActionResult Create(Tribe model)
{
    try
    {
        using (StructureEntities db = new StructureEntities())
        {
            var tribe = db.Set<Tribe>();
            tribe.Add(new Tribe {TribeName = model.TribeName });
            //db.Tribes.Add(model);
            db.SaveChanges();
        }

        return Json(true, JsonRequestBehavior.AllowGet);
    }
    catch(Exception ex)
    {
        return Json(new { success = false, message = ex.Message }, JsonRequestBehavior.AllowGet);
    }

    // return RedirectToAction("NewsCreated", model);
}

Когда я делаю его тип get, я возвращаюсь к методу успеха, но из-за типа Я не могу отправить свои данные контроллеру.

В этом выше ajax Я могу отправлять и сохранять свои данные, но не могу вернуться к успешному методу ajax

Я много искал перед публикацией этого вопроса

надеется на ваши предложения

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

, поскольку true не возвращает как bool, оно возвращается как строка, в которой ваш код должен выглядеть как

        if (data=="True") {
            alert('asd');
            $('#butn').trigger('click');
        }
0 голосов
/ 05 апреля 2020

Можете ли вы попробовать это

1) Создайте один класс модели для generi c, используя

 public class AjaxActionResult
 {
        public string Message { get; set; }
        public bool Success { get; set; }
        public object Data { get; set; }
 }

//In your action 


public ActionResult Create(Tribe model)
{
    try
    {
        using (StructureEntities db = new StructureEntities())
        {
            var tribe = db.Set<Tribe>();
            tribe.Add(new Tribe {TribeName = model.TribeName });
            //db.Tribes.Add(model);
            db.SaveChanges();
        }

        return Json(new AjaxActionResult()
        {
            Message = "Your message",
            Success = true
        });
    }
    catch(Exception ex)
    {
        return Json(new AjaxActionResult()
        {
            Message = ex.Message,
            Success = false,
            Data = ex
        });
    }
}

В jquery, вам нужно изменить, как показано ниже

$("#create").click(function(e) {  
    var myModel =
                {
                    "TribeName": $('#TribeName').val()
                };

var jsonToPost = JSON.stringify(myModel);
$.ajax({
    url: '/Home/Create/',
    async: true,
    processData: false,
    data: jsonToPost,
    type: 'post',
    contentType: 'application/json; charset=utf-8',
    success: function (data) {
        if (data.Success) {
            alert('asd');
            $('#butn').trigger('click');
        }
    },
    error: function (err) {
        if (!$('.modal-header').hasClass('alert-danger')) {
            $('.modal-header').removeClass('alert-success').addClass('alert-danger');
            $('.delete-confirm').css('display', 'none');
        }
        $('.success-message').html(err.statusText);
    }
});
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...