У меня есть CKEditor и я сохраняю это как Html в моей базе данных. Тогда я собираюсь получить этот сохраненный поток html и показать его внутри div. Но он показывает коды html.
Мой веб-метод возвращается ниже строки
<p> <strong>Test Heading </strong></p> <p> <img alt="" src="http://s7.postimg.org/511xwse93/mazda_familia_photo_large.jpg" style="width: 150px; height: 112px;" /></p> <p> test description goes here</p>
Div
<div id="usrnewsdesc"></div>
Мой звонок Ajax
function LoadNewsToUsers() {
debugger;
var newurl = '<%= ResolveUrl("/WebMethods.aspx/GetIndividualUserNews") %>';
$.ajax({
url: newurl,
type: "POST",
data: JSON.stringify({ ToUser: "<%=GetUserID()%>" }),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (Result) {
$.each(Result.d, function (key, value) {
var html ="<body>"+value.News+"</body>";
$("#usrnewsdesc").append(html);
});
},
error: function (e, x) {
alert(x.ResponseText);
}
});
}
Мой div выглядит так
Мой WebMethod
[WebMethod, ScriptMethod]
public static List<UserNews> GetIndividualUserNews(Guid ToUser)
{
List<UserNews> UserNewsDetails = new List<UserNews>();
try
{
SqlCommand comGetAllFiles = new SqlCommand("SP_GetNewsToUser", conDB);
comGetAllFiles.CommandType = CommandType.StoredProcedure;
if (conDB.State == ConnectionState.Closed)
conDB.Open();
comGetAllFiles.Parameters.Add("@ToUser", SqlDbType.UniqueIdentifier);
comGetAllFiles.Parameters["@ToUser"].Value = ToUser;
SqlDataReader rdr = comGetAllFiles.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(rdr);
foreach (DataRow r in dt.Rows)
{
UserNewsDetails.Add(new UserNews
{
Id = (int)r["Id"],
News = r["News"].ToString(),
DateTime =(DateTime) r["DateTime"],
ToUser = (Guid)r["ToUser"]
});
}
}
catch (Exception ee)
{
}
finally
{
conDB.Close();
}
return UserNewsDetails;
}
Console.log ниже
<p>
<strong>Test Heading </strong></p>
<p>
<img alt="" src="http://s7.postimg.org/511xwse93/mazda_familia_photo_large.jpg" style="width: 150px; height: 112px;" /></p>
<p>
test description goes here</p>
Вам нужно расшифровать содержимое html, прежде чем вы сможете использовать его как html.
success: function (Result) {
$.each(Result.d, function (key, value) {
var html = $("<div/>") // temp container
.html(value.News) // "render" encoded content to text
.text(); // retrieve text (actual html string now)
// body tags are a bad idea here but whatever.
html = "<body>" + html + "</body>";
$("#usrnewsdesc").append(html);
});
},
С учетом этого сообщения для инструкции декодирования: как декодировать объекты HTML с помощью jQuery?
Вы видите правильный результат. Нет ничего плохого. Это HTML Encoded, вы должны его декодировать. Вы можете использовать сериализатор NewtonSoft json для декодирования. Преобразуйте его, а затем верните его со стороны сервера. Лучше, если вы можете заменить на стороне javascript перед тем, как применить его с append, потому что, если сервер иногда будет возвращаться, ваш js-клиент будет сломан. Кроме этого все коды в порядке
Попробуйте заменить кавычки на js -
var s = value.News.replace('<','<').replace('>','>').replace('&squote','\'').replace('"e','"');
$("#usrnewsdesc").html(s);
может быть, это поможет или использует NewtonSoft
JSON serializer-