#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); ... });