Tengo una llamada AJAX que funciona y me devuelve JSON
Aquí está la llamada AJAX
<script> $('#display').click(function () { var vacancyId = $("#vacancy").val(); var model = { vacancyId: vacancyId }; $.ajax({ url: '@Url.Action("QuestionBlocks", "Questions")', contentType: 'application/json; charset=utf-8', data: JSON.stringify(model), type: 'POST', dataType: 'json', processData: false, success: function (data) { $(".list").append('<div>' + data.Question1 + '</div>'); } }); });Aquí está el lado del servidor
[HttpPost] public ActionResult QuestionBlocks(int vacancyId) { var items = db.QuestionBlocks .Where(x => x.Interview.VacancyId == vacancyId) .Select(x => new { ID = x.Block_ID.ToString(), Question1 = x.Question1, Question2 = x.Question2, Question3 = x.Question3, Question4 = x.Question4, Question5 = x.Question5, Question6 = x.Question6, Question7 = x.Question7, Question8 = x.Question8, Question9 = x.Question9, Question10 = x.Question10, }) .ToList(); return Json(items, JsonRequestBehavior.AllowGet); }Devuelve datos como este
{ID: "1087", Pregunta 1: "Расскажите о себе", Pregunta 2: "Háblame de ti",…}
Mi problema en esto - $(".list").append('<div>' + data.Question1 + '</div>'); funciona bien, pero se muestra undefined
¿Porque?
Parece que necesita analizar datos en JSON. Intenta usarlo así:
$(".list").append('<div>' + JSON.parse(data).Question1 + '</div>');Parece que hay una matriz dentro data , así que intente un código de éxito como este:
$.ajax({ url: '@Url.Action("QuestionBlocks", "Questions")', contentType: 'application/json; charset=utf-8', data: JSON.stringify(model), type: 'POST', dataType: 'json', processData: false, success: function (data) { var question1 = data[0]; $(".list").append('<div>' + question1.Question1 + '</div>'); } });Creo que no devuelve {ID: "1087", Question1: "Расскажите о себе", Question2: "Tell about you",…} . ¿Estás seguro que? los items serán una matriz (ToList()).
[{ID: "1087", Question1: "Расскажите о себе", Question2: "Tell about you",…}]Así que ponte primero:
var question1 = data[0] $(".list").append('<div>' + question1.Question1 + '</div>');