2014-10-30 3 views
2

Мне нужно обновить html DOM с помощью javascript, вставив ссылку, которая вызывается функцией javascript, когда пользователь нажимает ссылку в шаблоне Thymeleaf.Как избежать одиночной цитаты в тимелеафе и код javascript

$.ajax({ 
    type: "GET", 
    beforeSend: function(xhrObj){ 
    xhrObj.setRequestHeader("Content-Type","application/json"); 
    xhrObj.setRequestHeader("Accept","application/json"); 
    }, 
    url: "https://stackoverflow.com/users/list", 
    dataType:"json", 
    success: function(data, textStatus, jqXHR){ 
     var table = $("#userlist").children(); 
     for(i in data){ 
      table.append("<tr><td><a onclick='user_see("+data[i].userId+")' th:href='#'>"+data[i].userId+"</a></td><td>"+data[i].firstName+"</td><td>"+data[i].lastName+" 
      } 
    } 
}); 

Оказывается, Тимелеаф заменяет одинарные кавычки двойными кавычками. Я пытался уйти от опалить цитату \», но я только в конечном итоге с ошибкой разбора Thymeleaf, когда страница загружается

чт 30 октября 17:55:21 EAT 2014 Был непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500). Исчерпывающий документ для анализа: template = "users/list",

Как избежать одиночной кавычки?

ответ

1

Самым безопасным было бы не добавлять HTML в виде строки, а вместо этого использовать DOM API. Это словосочетание, но позволяет избежать котировок:

data.forEach(function(datum) { 
    var tr = document.createElement('tr'); 
    var td = document.createElement('td'); 
    var a = document.createElement('a'); 
    a.onclick = function() { user_see(datum.userId); }; 
    a.setAttribute('th:href', '#'); 
    a.innerHTML = datum.userId; 
    tr.appendChild(td); 
    td = document.createElement('td'); 
    td.innerHTML = datum.firstName; 
    tr.appendChild(td); 
    td = document.createElement('td'); 
    td.innerHTML = datum.lastName; 
    tr.appendChild(td); 
    table.appendChild(tr); 
} 
+0

Спасибо. Это намного чище. Так значит ли это, что невозможно избежать цитаты? –

+0

Практически все возможно *. В зависимости от того, где появляется кавычка, вы можете попробовать сделать простой '.replace (/' /, "\\ '") 'или аналогичный. –

Смежные вопросы