HTML возвращается в метод jQuery не сформирован правильно

У меня есть метод jQuery Ajax, который ожидает, что HTML будет возвращен. URL-адрес функции js переходит к методу JsonResult в ASP.NET MVC. Я использую stringbuilder для построения HTML, и это выглядит правильно, когда я использую watch в VS. Однако, когда он возвращает HTML на страницу, я не верю, что он был правильно декодирован, это не список якорных тегов.

Мой джаваскрипт

 function getPanDocs(memberNum) {
        $.ajax({
            type: "GET",
            url: '/Home/GetPandoraDocs',
            dataType: 'html',
            data: {
                MembershipNumber: memberNum 
            },
            success: function (success) {
                $('.pandoraDoc' + memberNum).html(success);
            }
        });

Контроллер метод

 [HttpGet]
        public JsonResult GetPandoraDocs(string MembershipNumber)
        {
            Business.Pandora.Pandora p = new Business.Pandora.Pandora();
            string DocLinks =  p.GetDocsById(MembershipNumber);

            return Json(new { success = DocLinks }, JsonRequestBehavior.AllowGet);
        }

Метод класса для циклического прохождения набора сущностей и создания тегов привязки

public string GetDocsById(string MembershipNumber)
        {

            DataLayer.Pandora.Pandora Pandora = new DataLayer.Pandora.Pandora();
            List<vwPandora2CheckOff> PandoraList = Pandora.GetPandoraDocsById(MembershipNumber);

            StringBuilder sb = new StringBuilder();
            sb.AppendLine("<ul>");
            foreach (var item in PandoraList)
            {
                sb.AppendLine("<li>");
                string r = item.StoragePath.Replace("\\\\s-documation\\IME_Pandora", "http://pandora.imeche.org/fileshare"); 
                sb.AppendLine("<a href=\" " + r + item.StorageName + "\" target=\"_blank\" >");
                sb.AppendLine("link to document");
                sb.AppendLine("</a>");
                sb.AppendLine("</li>");
            }
            sb.AppendLine("</ul>");
            return sb.ToString();
        }

Моя проблема заключается в том, что HTML не отображается должным образом, и я не уверен, что это ошибка в коде C# или JS.

2 ответа

Мне кажется, что вы используете XHR-объект actall вместо responseText, попробуйте:

function getPanDocs(memberNum) {
   $.ajax({
       type: "GET",
       url: '/Home/GetPandoraDocs',
       dataType: 'html',
       data: {
          MembershipNumber: memberNum 
       },
       success: function (success) {
          $('.pandoraDoc' + memberNum).html(success.responseText);
       }
   });
}

Вы отправляете объект из контроллера. Таким образом, у вас есть доступ к html как success.success

function getPanDocs(memberNum) {
    $.ajax({
        type: "GET",
        url: '/Home/GetPandoraDocs',
        dataType: 'html',
        data: {
            MembershipNumber: memberNum 
        },
        success: function (success) {
            $('.pandoraDoc' + memberNum).html(***success.success***);
        }
    });
}
Другие вопросы по тегам