返回到jQuery方法的HTML未正确形成

时间:2014-06-24 09:22:19

标签: c# jquery html asp.net-mvc-3 decode

我有一个jQuery Ajax方法,希望返回HTML。 js函数url转到ASP.NET MVC中的JsonResult方法。我正在使用stringbuilder来构建HTML,当我在VS中使用watch时它看起来是正确的。但是,当它将HTML返回到页面时,我不相信它已被正确解码,它不是锚标记列表。

我的javascript

 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();
        }

enter image description here

enter image description here

我的问题是html渲染不正确,并且不确定它是否是c#代码或js代码中的错误。

2 个答案:

答案 0 :(得分:0)

在我看来,您使用的是实际的XHR对象而不是responseText,trip>

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

答案 1 :(得分:0)

您从控制器发送对象。所以你可以访问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***);
        }
    });
}