我想上传图片并在不刷新的情况下显示图片。
我知道的方法是使用隐藏的iframe并将表单的目标设置为它。
然后从控制器调用“parent.func()”返回一段javascript来做某事......
但这是我的问题:
似乎除非前台知道dataType是“script”,否则不会执行javascript,如:
$.ajax {
dataType:"script"
}
但提交表格时,我必须使用
$("...").submit()
所以我无法指定dataType ....
谁能告诉我该怎么做?...
或者你能告诉我另一种实现目标的方法:
上传图片并在Rails 3.2.0中不刷新显示它。
答案 0 :(得分:0)
尝试使用remotipart gem:
答案 1 :(得分:0)
我这样做的方式是调用代码(调用$("...").submit()
)将侦听隐藏的iframe上的load事件,然后做出反应;而不是服务器返回自动运行的JavaScript。
在iframe加载事件中,如果要返回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 + ")");
或者,在您的情况下,如果响应只是图像,那么您的加载回调可能会将响应放入< div>或者您已在页面上创建的其他元素。
您可能需要查看以下插件: https://github.com/valums/ajax-upload
或者,如果您想利用HTML5功能,可以使用更高级的插件: https://github.com/valums/file-uploader
答案 2 :(得分:0)
我认为您问题的正确答案是使用以下代码
render :inline => '<script type="text/javascript">parent.callback(data)</script>'