jQuery Datatable中不允许使用Lessthan(<)符号

时间:2015-02-18 06:45:55

标签: jquery json datatable

要求很小,我想用JSON数据显示数据表, 在这里,我遇到了一个小小的挑战,如果JSON数据有像lessthan symbol(<)这样的特殊字符,则数据不会显示在数据网格中。 不知道为什么只有lessthan symbol(<)才会出现问题 我尝试使用以下代码,如果有任何遗漏,请纠正我, 例如:姓氏为Jhons<asdf,但仅显示Jhons 请帮帮我。

这是我的示例代码

$.ajax({
    url: '/echo/json/',
    type: "post",
    dataType: "json",
    data: {
        json: JSON.stringify([
            {
            id: 1,
            firstName: "Peter&heins",
            lastName: "Jhons<asdf"},
        {
            id: 2,
            firstName: "David>tyy",
            lastName: "Bowie<wwww"},
            {
            id: 2,
            firstName: "David<test",
            lastName: "testqwwe>qewrqwe"}
        ]),
        delay: 3
    },
    success: function(data, textStatus, jqXHR) {
        // since we are using jQuery, you don't need to parse response
        drawTable(data);
    }
});

function drawTable(data) {
    for (var i = 0; i < data.length; i++) {
        drawRow(data[i]);
    }
}

function drawRow(rowData) {
    var row = $("<tr />")
    $("#personDataTable").append(row); //this will append tr element to table... keep its reference for a while since we will add cels into it
    row.append($("<td>" + rowData.id + "</td>"));
    row.append($("<td>" + rowData.firstName + "</td>"));
    row.append($("<td>" + rowData.lastName + "</td>"));
}

JSFiddle

由于

2 个答案:

答案 0 :(得分:0)

因为&lt;是HTML中的特殊字符,您需要将其转义。

row.append($("<td>").text(rowData.firstName));

答案 1 :(得分:0)

<强> Demo

您可以使用

row.append($("<td>" + rowData.lastName.replace("<","&lt") + "</td>"));

而不是

row.append($("<td>" + rowData.lastName + "</td>"));
  

如果您在文本中使用小于(&lt;)或大于(&gt;)的符号,则浏览器可能会将它们与标记混合使用。   字符实体用于在HTML中显示保留字符。

<强> Manual