Json вернул мой HTMLв форме Юникода \ u003cbr / \ u003e.Причинениепечатается как текст, а не как новая строка - PullRequest
4 голосов
/ 25 января 2011

Я использую ASP.net MVC3, и я вернул модель в формате Json, используя Jquery.AJAX, а затем передал ее в шаблон Jquery для печати. ​​

Например, Json, который возвратил сервер: {"Key":2,"Content":"I'm Jason\u003cbr /\u003ehow are you"} вместо {"Key":2,"Content":"I'm Jason <br /> how are you"}

когда я добавляю его в Div с помощью шаблона Jquery, он печатает что-то вроде этого:

I'm Jason <br /> how are you

в то время как ожидаемый результат должен быть

I'm Jason 
how are you

Предполагается ли запретить серверу кодировать строку на стороне сервера? Но я думаю, что это может вызвать проблемы с безопасностью.
Поэтому я думаю, что мне нужно декодировать строку Json на стороне клиента, но пока не повезло. Может кто-нибудь показать мне подходящий способ решения этой проблемы?
Спасибо

* Обновлено
Я проверил с jQuery('#someDiv').append(data.Content); и распечатал его как положено.
Так что проблема, вероятно, связана с шаблоном Jquery

Я использую этот код для передачи данных в шаблон Jquery jQuery('#someTemplate').tmpl(data).appendTo('#someDiv');
Мой шаблон Jquery

<script id="someTemplate" type="text/x-jquery-tmpl">
 <div>${Content}</div>
</script>

Ответы [ 3 ]

1 голос
/ 14 июня 2011

Я столкнулся с этой же проблемой. Нет необходимости кодировать / декодировать или бежать / убираться.

Вместо этого:

${Content}

Используйте это:

{{html Content}}

Юникод с отображением в виде HTML.

0 голосов
/ 28 января 2011

У меня такая же проблема с шаблонами ajax. у строки есть \ n, которая игнорируется в шаблоне, и если я преобразую \ n в <br/>, вместо строки будет отображаться <br />.

если я использую {{ unscape(myString) }}, то результат по-прежнему «некоторый текст <br /> следующая строка»

0 голосов
/ 25 января 2011

Вы должны удалить строку содержимого, например ::1001.

alert(unescape('\u003cbr /\u003e'));
...