4

ruby/sinatra 为 ajax 请求提供“object.to_json”:

  ...
  content_type :json
  adam.to_json
end
#--> #<Human:0x10aa540 @x=68, @y=24, @name="Adam", @age=50>

带有 jquery 的 js:

...
$("#player").html(data);
...

导致 div 仅填充“#”字符。

console.log(data) 显示:

#<Human:0x10aa540 @x=68, @y=24, @name="Adam", @age=50>

所以我猜这是因为“<”和其他字符被解释为html。我怎样才能避免它并在网页中显示该对象,因为它出现在调试控制台上?

谢谢

4

2 回答 2

1

如果有帮助:

data.replace(/\</gi,"&lt;");

jsfiddle

于 2012-11-04T08:12:23.723 回答
1

您可以要求浏览器为您转义 HTML,方法是将其添加到临时块并检索转义的内容。这样,您可以确保所有 HTML 标记都被转义,而不仅仅是>and <

var temp_div = document.createElement('div'); // Create temporary div

temp_div.appendChild(document.createTextNode(data)); // Insert data as Text
data = temp_div.innerHTML; // Get Text escaped

jsFiddle

于 2012-11-04T22:09:09.683 回答