2012-01-31 68 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