2013-07-14 2 views
2

Вот JSON:Невозможно разобрать JSON строку с более знаком с использованием JQuery

{ "expression" : "Hello World", 
    "message" : "Hello<br>World. I'm trying also to write <something> inside greater than and lower than signs." 
}, 

Вот JQuery:

$(".info").append(obj[i].message); 

Вот это HTML:

<div class="info"></div> 

Я понимаю, что все внутри «<» и «>» не отображается в div.

+0

Это он, когда вы просматриваете источник? попробуйте < вместо < – rene

ответ

4

Это не имеет никакого отношения к JSON.

Метод append интерпретирует то, что вы даете ему как разметку HTML, если вы даете ему строку. Поэтому, естественно, < символов должны быть правильно закодированы как &lt;, как и в HTML в целом. Просто закодируйте их, и append будет работать правильно.

Образец, который вы дали, выглядит как разметка, так как у вас есть <br>. Проблема заключается в том, что <something>, который выглядит как тег. Он должен быть &lt;something> или &lt;something&gt;.

Если вы хотите текст, который будет интерпретироваться как текст, а не HTML, вы можете использовать метод text, либо заменяет содержимое div «s целиком:

$(".info").text(obj[i].message); 

... или добавить к нему как ваш код пытается на данный момент:

$(".info").append($("<span>").text(obj[i].message).html()); 
+0

Да, спасибо за объяснение. Я отказался от использования <, потому что он не работает для . Теперь
в порядке. Проблема в том, что мне нужно показать
как HTML и как текст. –

+0

@MarioLimaCavalcanti: Конечно, '<' работает для '', как и в HTML (потому что это ** является ** HTML). (Я разместил здесь ссылки jsbin, но jsbin, похоже, сейчас разбит.) –

+0

О, я видел ссылки, но не могу найти разницу между рабочими и сломанными примерами. T пытается написать и < что-то >, но происходит то же самое, теперь оно отображается как текст. :/ –

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