Как выполнить JavaScript, возвращаемый контроллером в Rails? - PullRequest
0 голосов
/ 01 февраля 2012

Я хочу загрузить изображение и показать его без обновления.

Известный мне метод - использовать скрытый iframe и установить для него цель формы.

Затем верните кусок javascript из контроллера, вызывающего "parent.func ()", чтобы сделать что-то ...

Но вот моя проблема:

Кажется, что javascript не будет выполнен, если передний план не знает, что dataType является "script", что-то вроде:

$.ajax {
    dataType:"script"
}

но при отправке формы я должен использовать

$("...").submit()

Так что я не могу указать dataType ....

Может кто-нибудь сказать мне, что делать? ...

Или вы можете сказать мне другой способ достижения моей цели:

загрузите изображение и покажите его без обновления в Rails 3.2.0 ..

Ответы [ 3 ]

0 голосов
/ 01 февраля 2012

То, как я это сделал, - это вызывающий код (который вызывает $("...").submit()), который прослушивает событие загрузки в скрытом iframe и затем реагирует; а не сервер, возвращающий JavaScript, который автоматически запускается.

В событии загрузки iframe вы можете превратить ответ в объект JavaScript, если возвращаете JSON:

// assuming you have a DOM element with a variable of "iframe"
var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document;
var response = eval("(" + doc.body.innerHTML + ")");

Или, в вашем случае, если ответом является просто изображение, ваш обратный вызов загрузки может поместить ответ в

или в какой-либо другой элемент, который вы уже создали на странице.

Вы можете проверить следующий плагин: https://github.com/valums/ajax-upload

Или, если вы хотите воспользоваться возможностями HTML5, более продвинутый плагин: https://github.com/valums/file-uploader

0 голосов
/ 16 мая 2013

Я думаю, что правильный ответ на ваш вопрос - используйте код ниже

render :inline => '<script type="text/javascript">parent.callback(data)</script>'
0 голосов
/ 01 февраля 2012

попробуйте использовать гем remotipart:

http://github.com/JangoSteve/remotipart

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...