我有一个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();
}
我的问题是html渲染不正确,并且不确定它是否是c#代码或js代码中的错误。
答案 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***);
}
});
}