Может помочь кому-то и сэкономить время на размышления. У меня была похожая проблема, код сервера искал заголовок Content-Type. Он делал это следующим образом:
if($request->headers->content_type == 'application/json' ){ //Parse JSON... }
Но Волли отправлял заголовок так:
'application/json; charset?utf-8'
Изменение кода сервера на это помогло:
if( strpos($request->headers->content_type, 'application/json') ){ //Parse JSON...
Посмотрите, как это делает jQuery:
text: function( text ) {
if ( typeof text !== "object" && text != null )
return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
var ret = "";
jQuery.each( text || this, function(){
jQuery.each( this.childNodes, function(){
if ( this.nodeType != 8 )
ret += this.nodeType != 1 ?
this.nodeValue :
jQuery.fn.text( [ this ] );
});
});
return ret;
},
Что-то вроде этого должно сработать:
$('#mydiv').append(
document.createTextNode('<b>Hey There!</b>')
);
РЕДАКТИРОВАТЬ : Что касается вашего примера, это очень просто:
$('#messages').append(document.createTextNode(item));
Вы добавляете элемент, который уже имеет содержимое? Или вы добавляете контент после добавления? В любом случае вам все равно нужно сделать .text (...) для этого элемента.
Если вы используете добавление и передаете HTML в качестве аргумента, попробуйте сначала создать элемент и передать его в добавление.
Пример:
$('<div/>').text('your content here').appendTo('div#someid')