2010-06-13 2 views
1

Я использую Facebox, и когда я попытался изменить содержимое тега, это дает мне сырой HTML, но тонированное форма, фрагмент кода:Почему это дает мне необработанный HTML?

jQuery('#facebox .content').html("<%= escape_javascript(render :partial => 'form')%>"); 

Кто-нибудь имеет ни малейшего представления об этом? Большое спасибо.

+0

Это не приложение Rails 3, не так ли? Интересно, нужно ли вам называть html safe на нем, прежде чем возвращать его в браузер. –

ответ

0

Это, скорее всего, из-за того, что HTML преобразуется в представление сущностей, тем самым предоставляя вам сырой вывод html. Я не рубиновый парень, но, возможно, escape_javascript функция делает это, как следует из названия.

Ниже пример кода JQuery должен, например, добавить HTML, а не выходной сырой выход HTML:

$('#div').html($('#another_div').html()); 
+0

Да, escape_javascript используется для устранения вредоносных данных, которые пользователь может ввести, но даже без escape_javascript он не работает, я пробовал это, jQuery ('# facebox .content'). Html ("

HHH

") И это дает мне

HHH

leomayleomay

+0

@leomayleomay: Тогда вполне возможно, что facebox уже кодирует его в raw html. Возможно, на сайте facebook есть информация об этом. – Sarfraz

+0

Большое спасибо, я рассмотрю, что – leomayleomay

0

@leomayleomay: По facebox визуализатора я имел в виду команду, которая выводит на экран facebox (есть несколько способов сделать это с facebox)

Однако, если все, что вам нужно сделать, это изменить содержание в настоящее время показывая facebox, то вы можете вызвать команду jQuery.facebox('some html');

Если это не работает, либо, то может быть, вы могли бы дать нам ссылку на страницу, где вы проверяете на это

+0

благодарит за ваш ответ, Я попробовал jQuery.facebox («некоторый html»), он тоже не работает, и поскольку проект все еще находится в разработке, у меня нет ссылки, чтобы показать вам неожиданный результат. Извините, – leomayleomay

+0

Я думал, что это имеет какое-то отношение к форме, содержащей в ней файловое поле, ajaxSubmit создаст iframe для загрузки файла, а возвращаемый фрагмент Javascript пойдет в iframe, проверьте это, http://malsup.com/jquery/form/# file-upload – leomayleomay

+0

Это хорошая информация. Как ваш маникюр вписывается в поток? является ли содержимое html в facebox, которое вы вводите, отправляется на сервер, а затем отправляется обратно? Я просто пытаюсь воссоздать этот процесс в своем уме. Как вы думаете, можно ли создать небольшую тестовую страницу, которая воссоздает проблему? – Raine

0

Это может быть старым, но это то, что работает для меня

jQuery.facebox ('# {escape_javascript (визуализации: частично = > 'index')} '). html()

.html() в конце строки - это то, что на самом деле это сделало. Без него это был рендеринг raw html ... Единственная проблема, с которой я столкнулся сейчас, - это частичный, имеющий некоторый javascript, но он не получает рендеринг, скорее всего, из-за функции escape_javascript. Я буду рыть.

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