我想上传一张图片,不刷新就能显示出来。
我知道的方法是使用一个隐藏的iframe,并将表单的目标设置为它。
然后从控制器返回一段javascript,调用"parent.func()“来做一些事情……
但我的问题是:
似乎javascript不会被执行,除非前台知道这个脚本是“dataType”,类似于:
$.ajax {
dataType:"script"
}但在提交表单时,我必须使用
$("...").submit()所以我不能指定dataType...
有人能告诉我该怎么做吗?
或者你能告诉我实现我目标的另一种方法:
上传图像并在Rails 3.2.0中无需刷新即可显示。
发布于 2012-02-01 14:38:05
尝试使用remotipart gem:
发布于 2012-02-01 15:05:14
我这样做的方式是,调用代码(调用$("...").submit())将侦听隐藏的iframe上的load事件,然后做出反应;而不是服务器返回自动运行的JavaScript。
在iframe load事件中,如果要返回JSON,则可以将响应转换为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
发布于 2013-05-16 23:10:56
我认为你的问题的正确答案是使用下面的代码
render :inline => '<script type="text/javascript">parent.callback(data)</script>'https://stackoverflow.com/questions/9091586
复制相似问题