这是js代码
function startChatSession(){
$.ajax({
url: "chat.php?action=startchatsession",
cache: false,
dataType: "json",
success: function(data) {
username = data.username;
$.each(data.items, function(i,item){
if (item) { // fix strange ie bug
chatboxtitle = item.f;
if ($("#chatbox_"+chatboxtitle).length <= 0) {
createChatBox(chatboxtitle,1);
}
if (item.s == 1) {
item.f = username;
}
if (item.s == 2) {
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxinfo">'+item.m+'</span></div>');
} else {
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+item.m+'</span></div>');
}
}
});
此处+ item.m +包含纯文本
如果它包含html标签,那么它也会返回html标签
例如+ item.m +包含
<b>Hello</b>
我希望输出
你好
但我的输出与
相同<b>Hello</b>
此代码在IM聊天中实现,我需要在聊天窗口中执行html代码。 。 .so请通过建议在这里获取html执行来帮助我
谢谢
答案 0 :(得分:1)
在PHP方面,不要使用htmlentities()来编码您返回的内容。执行此操作时,服务器将分别返回字符<
和>
的HTML代码<
和>
。
答案 1 :(得分:1)
您似乎正在从服务器接收编码文本。尝试在连接字符串之前在字符串上应用unescape()。
答案 2 :(得分:1)
似乎您有<b>
而不是真正的<br>
,要解决此问题:
var itemText = item.m
.replace(/<b>/g, '<b>')
.replace(/<\/b>/g, '</b>');
然后在代码中使用itemText
代替item.m
,如下所示:
var itemText = item.m
.replace(/<b>/g, '<b>')
.replace(/<\/b>/g, '</b>');
if (item.s == 2) {
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxinfo">'+itemText+'</span></div>');
} else {
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+itemText+'</span></div>');
}
如果你想对其他一些标签这样做:
<a href="chat.php">Hello</a>
你可以这样做:
var itemText = item.m
.replace(/<\/a>/g, '</a>')
.replace(/<a/g, '<a')
.replace(/>/g, '>');
答案 3 :(得分:1)
解码HTML实体,使用.html jQuery函数解码实体
item.m = $('<div>').html(item.m).text();
但我建议你删除服务器端的实体,我发现你正在开发一个聊天,所以你最好删除任何HTML标签以解决安全问题,不知道你是如何处理这些消息的,但是用户有时可以进行跨站点脚本编写。