Javascript变量包含包含html标记的纯文本

Javascript变量包含包含html标记的纯文本,javascript,php,jquery,html,Javascript,Php,Jquery,Html,这是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) { /

这是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+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+item.m+'</span></div>');
            }
        }
    });
函数startChatSession(){
$.ajax({
url:“chat.php?action=startchatsession”,
cache:false,
数据类型:“json”,
成功:功能(数据){
用户名=data.username;
$.each(data.items,function(i,item){
如果(项){//修复奇怪的ie错误
chatboxtitle=项目.f;

如果在PHP端使用($(“#chatbox“+chatboxtitle).length,则不要使用htmlentities()对返回的内容进行编码。当您这样做时,服务器将分别返回字符
的HTML代码,在PHP端,则不要使用htmlentities()对返回的内容进行编码。执行此操作时,服务器将分别返回字符
的HTML代码

似乎您正在从服务器接收编码文本。尝试应用unescape()在串接字符串之前,请在字符串上执行此操作。

似乎您正在从服务器接收编码文本。尝试在串接字符串之前在字符串上应用unescape()。

似乎您有
b>
而不是真正的

,要修复此问题,请执行以下操作:

var itemText = item.m
    .replace(/&lt;b&gt;/g, '<b>')
    .replace(/&lt;\/b&gt;/g, '</b>');
如果您想对其他一些标签执行此操作,如:

        var itemText = item.m
            .replace(/&lt;b&gt;/g, '<b>')
            .replace(/&lt;\/b&gt;/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+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+itemText+'</span></div>');
        }
<a href="chat.php">Hello</a>

您可以这样做:

var itemText = item.m
    .replace(/&lt;\/a&gt;/g, '</a>')
    .replace(/&lt;a/g, '<a')
    .replace(/&gt;/g, '>');
var itemText=item.m
.替换(/\/a/g'')
.替换(/a/g,”);

似乎您有了
b>
而不是真正的

,要修复它,请执行以下操作:

var itemText = item.m
    .replace(/&lt;b&gt;/g, '<b>')
    .replace(/&lt;\/b&gt;/g, '</b>');
如果您想对其他一些标签执行此操作,如:

        var itemText = item.m
            .replace(/&lt;b&gt;/g, '<b>')
            .replace(/&lt;\/b&gt;/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+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+itemText+'</span></div>');
        }
<a href="chat.php">Hello</a>

您可以这样做:

var itemText = item.m
    .replace(/&lt;\/a&gt;/g, '</a>')
    .replace(/&lt;a/g, '<a')
    .replace(/&gt;/g, '>');
var itemText=item.m
.替换(/\/a/g'')
.替换(/a/g,”);

使用.HTML jQuery函数解码HTML实体

item.m = $('<div>').html(item.m).text(); 
item.m=$('').html(item.m).text();

但我建议您删除服务器端的实体,我看到您正在开发聊天,因此出于安全考虑,您最好删除任何HTML标记。不确定您如何处理消息,但用户有时可以执行跨站点脚本编写。

使用.HTML jQuery函数解码HTML实体

item.m = $('<div>').html(item.m).text(); 
item.m=$('').html(item.m).text();


但我建议您删除服务器端的实体,我看到您正在开发聊天,因此出于安全考虑,您最好删除任何HTML标记。不确定您如何处理消息,但用户有时可以执行跨站点脚本。

看起来
item.m
可能使用HTML实体,而不是文字
和code>
字符。
item.m
中的HTML标记必须使用htmlentities或类似的东西进行编码。因此,浏览器不会将它们解释为HTML标记。检查输出是否是HTML编码的,例如,它实际上是
bHello…
。检查我的答案,解决它。看起来
item.m
可能是u使用HTML实体,而不是文字
字符。
item.m
中的HTML标记必须使用htmlentities或类似的东西进行编码。因此,浏览器不会将它们解释为HTML标记。检查输出是否是HTML编码的,例如,它实际上是
bHello…
。检查我的答案,以解决此问题在php方面,我有$chat['message']=sanitize($chat['message']);它的意思初始化是在代码中定义的函数,检查它的功能。我敢打赌它调用的任何东西都是htmlentities()对不起,我找到了函数sanitize($text=htmlspecialchars($text,entu引号);$text=stru替换(“\n\r”,“\n”,$text)$text=str_replace(“\r\n”、“\n”、$text);$text=str_replace(“\n”、“
”、$text);}此函数HtmlSpecialChars是对HTML字符进行编码的内容。请尝试删除它。删除它后,将停止加载消息:(在php端,我有$chat['message']=sanitize($chat['message']));,它的意思初始化是在代码中定义的函数,检查它的功能。我敢打赌它调用的任何东西都是htmlentities()对不起,我找到了函数sanitize($text=htmlspecialchars($text,entu引号);$text=stru-replace(“\n\r”,“\n”,$text);$text=stru-replace(“\r\n”,“\n”,$text);$text=stru-replace(“\n”,“
,$text);}此函数HtmlSpecialChars是对HTML字符进行编码的函数。请尝试将其删除。删除该函数后,将停止加载邮件:(你能告诉我替换代码是什么吗,Thanks@Raj:我更新了
的答案。双引号呢?双引号通常不会改变,
就像
a href=“chat.php”您好/a
,唯一的问题是
。您能告诉我替换代码是什么吗,Thanks@Raj:我更新了
的答案。双引号呢?双引号通常不会改变,
就像
a href=“chat.php”您好/a
,唯一的问题是