首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails中执行控制器返回的javascript?

问如何在Rails中执行控制器返回的javascript?
EN

Stack Overflow用户
提问于 2012-02-01 14:11:32
回答 3查看 383关注 0票数 0

我想上传一张图片,不刷新就能显示出来。

我知道的方法是使用一个隐藏的iframe,并将表单的目标设置为它。

然后从控制器返回一段javascript,调用"parent.func()“来做一些事情……

但我的问题是:

似乎javascript不会被执行,除非前台知道这个脚本是“dataType”,类似于:

代码语言:javascript
复制
$.ajax {
    dataType:"script"
}

但在提交表单时,我必须使用

代码语言:javascript
复制
$("...").submit()

所以我不能指定dataType...

有人能告诉我该怎么做吗?

或者你能告诉我实现我目标的另一种方法:

上传图像并在Rails 3.2.0中无需刷新即可显示。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-01 14:38:05

尝试使用remotipart gem:

http://github.com/JangoSteve/remotipart

票数 0
EN

Stack Overflow用户

发布于 2012-02-01 15:05:14

我这样做的方式是,调用代码(调用$("...").submit())将侦听隐藏的iframe上的load事件,然后做出反应;而不是服务器返回自动运行的JavaScript。

在iframe load事件中,如果要返回JSON,则可以将响应转换为JavaScript对象:

代码语言:javascript
复制
// 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
EN

Stack Overflow用户

发布于 2013-05-16 23:10:56

我认为你的问题的正确答案是使用下面的代码

代码语言:javascript
复制
render :inline => '<script type="text/javascript">parent.callback(data)</script>'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9091586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档