将 换行符转换为 HTML
换行符



我有一个简单的想法,将我的 ajax JSON 调用中的n换行符转换为<br>,以便它正确显示我的数据。

我尝试了许多不同的方法来执行转换,但不断收到错误:

未捕获的类型错误:data.replace 不是一个函数

问题似乎是我拨打此电话的方式:

var incident = incident.replace(/n/g, "<br />");

从我在论坛上看到的情况来看,这就是我们应该如何使用.replace但我并没有理解为什么它不喜欢它。

我也尝试这样做:

"<td colspan='3'>"+incident.Impact.replace(/n/g, "<br />")+"</td>"+

这有效,但如果字段为空,它会返回一个错误,指出它无法读取未定义的.replace。有人有什么想法吗?

完整代码:

$.ajax({
    url: this.basePath() + '/GDI_PROD_Incidents?$filter=ÉtatValue%20ne%20%27Fermé%27&$orderby=PrioritéValue desc',
    dataType: 'json',
    cache: false,
    success: function (data) {
        $.each(data.d.results, function (index, incident) {
        var incident = incident.replace(/n/g, "<br />");
        $('body').append(
          "<table border='1' width='800' >"+
          "<tr  bgcolor='#9aff99' align='center'>"+
          "<td width='800px' colspan='4'><strong>Transfert de connaissances</strong></td>"+
          "</tr>" +
          "<tr bgcolor='#fff'>"+
          "<td width='165'>Billet:</td>"+
          "<td>"+incident.Incident+"</td>"+
          "<td width='165'>Priorité:</td>"+
          "<td>"+incident.PrioritéValue+"</td>"+
          "</tr>"+
          "<tr bgcolor='#fff'>"+
          "<td width='165'>Description:</td>"+
           "<td colspan='3'>"+incident.Description+"</td>"+
           "</tr>"+
           "<tr bgcolor='#fff'>"+
           "<td colspan='4' width='800px' bgcolor='#9aff99' align='center'>Détails</td>"+
           "</tr>"+
           "<tr bgcolor='#fff'>"+
           "<td width='165'>Impact:</td>"+
           "<td colspan='3'>"+incident.Impact+"</td>"+
           "</tr>"+
           "<tr bgcolor='#fff'>"+
           "<td width='165'>Dépannage</td>"+
           "<td colspan='3'>"+incident.Dépanage+"</td>"+
           "</tr>"+
           "<tr bgcolor='#fff'>"+
           "<td colspan='4' width='800px' bgcolor='#9aff99' align='center'>Suivi</td>"+
           "</tr>"+
           "<tr bgcolor='#fff'>"+
           "<td width='165'>Prochain Suivi:</td>"+
           "<td colspan='3'>"+incident.Suivi+"</td>"+
           "</tr>"+
           "<tr bgcolor='#fff'>"+
           "<td width='165'>Ressource:</td>"+
           "<td colspan='3'>"+incident.Ressources+"</td>"+
           "</tr>"+
           "<tr bgcolor='#fff'>"+
           "<td width='165'>Prime:</td>"+
           "<td colspan='3'>"+incident.ResponsableValue+"</td>"+
           "</tr>"+
           "</table>"+
           "<br><br>");
        })
    }
});

您正在尝试对对象使用字符串方法,而不是对该对象中的属性值使用字符串方法。

没有Object.replace(),因此会抛出错误

同样undefined.replace()也会导致错误

大概您只需要修复一些属性值,但首先必须确保这些值已定义并且是字符串,然后再使用replace()

尝试

function convertBreak(str){
   if(!str){
     return ''; // don't want `undefined` printing into page
   }
   // if it's something other than string, return it as is
   if( typeof str !=== 'string'){
      return str;
   }else{
     return str.replace(/n/g, "<br />")
    }
}
incident.Description = convertBreak(incident.Description);

你的代码的问题在这里:

    var incident = incident.replace(/n/g, "<br />");

您正在重新声明变量事件。尝试删除重新声明:

    incident = incident.replace(/n/g, "<br />");

最新更新