Обратный Вызов AJAX Не Показывает Сообщение Об Успешном Выполнении — ASP.NET MVC C#

#javascript #c# #asp.net #ajax #model-view-controller

Вопрос:

У меня есть некоторый код AJAX в моем JavaScript, который не показывает никаких предупреждений об успехе или сбое.

 function AttemptHouseViewingAppointment(house) {   var imgOfHouse = $(house).attr("value");  $.ajax({  type: "POST",  url: '@Url.Action("AttemptHouseViewingAppointment", "Viewing")',  dataType: "json",  data: ({  userId: @Model.UserId,  appointmentKey: '@Model.Key',  chosenHouse: imgOfHouse   }),  success: function (data) {  alert(data);  if (data.success) {  alert(data.message);  } else { alert(data.Message) }  },  error: function (xhr) {  alert(xhr.responseText);  }  });  };  

Вышеуказанная функция вызывается, когда я щелкаю по изображению на экране. Эта часть работает нормально, так как я установил точку останова на своем контроллере ASP, и я вижу, как вызывается соответствующее действие. Код на C# ниже:

 public ActionResult AttemptHouseViewingAppointment(int userId, string appointmentKey, int chosenHouse)  {  string selecteHouseName = $"./house-code-icons/{chosenHouse}.png";   var house =   _ctx.houses.Where(x =gt; x.HouseID == userId amp;amp; x.Icon == chosenHouse)  .FirstOrDefault() ?? null;   if(house != null)  {  var member = _ctx.User.FirstOrDefault(x =gt; x.Id.Equals(userId));   _ctx.Appointments.Add(new ViewingModel  {  House = chosenHouse,  UserId = userId  });   _ctx.SaveChanges();   return Json(new { success = true, message = "Appointment Confirmed!" });  }  else  {  return Json(new { success = false, message = "Sorry, a booking has already been made!" });  }  }  

Несмотря на то, что строки возвращаемого Json попадают и возвращаются на страницу, на моей странице нет всплывающего окна с предупреждением, чтобы сообщить пользователю об успехе или нет. Пожалуйста, дайте мне знать, если возникнут какие-либо вопросы.

Спасибо

Комментарии:

1. Вы проверили консоль браузера, чтобы узнать, не появляется ли ошибка JS после возвращения вашего контроллера?

Ответ №1:

Добавьте функцию готово в конец Ajax

 $.ajax({  .  .  . }).done(function( response ) {  alert(response);  ... });