2012-01-31 33 views
1

我要上传图片使用类似如何上传图片并使用jQuery和Rails不刷新显示它?

<form ...>  
    <input type="file" id="upload"></input> 
</form> 

形式没有一个提交按钮,我做一个div来替换它:

<div id="submit"></div> 

我希望,当点击div时,图像将被上传,然后在另一个img中显示而不刷新。

我知道我需要使用Ajax,但我不知道如何用jQuery和Rails实现它。

以下是我的问题:

  1. 如何发布上传文件到控制器

    我试着使用$。员额,但$( “#上传”)VAL()只返回文件路径,没有内容。

  2. 这是我的想法,实现我的目标,它可以工作吗?

    (1)功能绑定到$( “#提交”)。点击,上传文件到控制器

    (2)控制器保存在/公共文件夹中的文件,使文件的URL

    (3)定义一个函数在其中设置一些在URL中的SRC的.post的$回调

    如果我的想法有任何问题,请告诉我一个正确的方式...

    谢谢!

+0

不幸的是,大部分浏览器不支持此还,所以解决方法包括使用隐藏的Flash对象和iframe中 - 最流行的套件之一是Uploadify:http://www.uploadify.com/ – 2012-01-31 16:42:09

+0

...我看到..但仍然有一个问题..我试图使用一个需要从控制器返回的JavaScript的iframe。所以我在rails中使用了render:js =>“...”。但脚本无法执行......我不知道为什么.. – HanXu 2012-02-01 06:03:58

回答

2

最好的解决方案是使用jQuery plugin这将帮助你解决你的问题。

上传图片时,只需返回JSON作为图片位置的响应。

然后用jQuery或纯JavaScript更新图像的“src”属性。

JSON

{ url: "http://example.com/uploads/image-222.jpg" } 

JS执行上载成功

$('#id-of-your-image').attr(src, data.url); 

,其中数据是JSON从服务器返回给你。

+0

我试图用这个插件,但未能成功。总有错......我不知道为什么.....你确定它可以在Rails 3.2中使用吗? – HanXu 2012-02-01 06:01:07

+0

插件任何JS可用于任何支持的软件,对所有相同的过程。 – 2012-02-01 10:45:07

+0

是的...它现在可以工作... – HanXu 2012-02-02 03:28:31