У меня есть 2 базовых тестовых приложения, в которых я выполняю ajax-запросы.После вызова ajax-запроса, для первого, мне нужно проанализировать ajax data.responseText перед получением значений.Для второго я могу получить доступ к значениям напрямую .
Код первого приложения:
@using (Ajax.BeginForm("JsonAdd", "People", new AjaxOptions { OnComplete = "JsonAdd_OnComplete" }))
{
...
}
function JsonAdd_OnComplete(data) {
var json = $.parseJSON(data.responseText);
if (json.Success) {
$("#PersonList").html(json.PartialViewHtml);
}
$("#addPersonModal").slideToggle();
$("#message").html(json.Message);
}
Как видите, мне нужно проанализировать данные.Сначала откройте текст responseText, прежде чем получать значения.
Вот второе приложение:
@using (Ajax.BeginForm("_NewPersonToKeepInformed", "General", new { id = "NewPersonToKeepInformed" }, new AjaxOptions { Confirm = "Are you sure ?", HttpMethod = "POST", OnSuccess = "AddedSuccess" }))
function AddedSuccess(response) {
alert(response.message);
}
Для этого я напрямую обращаюсь к значениям.
Вот мой метод действия контроллера:
public JsonResult JsonAdd(AddPersonViewModel AddPersonModel)
{
...
return Json(new
{
Success = true,
Message = "The person has been added!"
});
}
Вот второй:
public JsonResult _NewPersonToKeepInformed(NewPersonToKeepInformedViewModel viewModel)
{
...
// return newly added person in a Json object
return Json(new { message = "Ajout effectué", firstName = viewModel.FirstName, lastName = viewModel.LastName, phone = viewModel.Phone, mail = viewModel.Mail });
}
Почему?
Спасибо.