2012-02-01 35 views
0

我想上傳圖片並不刷新顯示。如何在Rails中執行由控制器返回的javascript?

我知道的方法是使用隱藏的iframe並將表單的目標設置爲它。

然後從控制器調用「parent.func()」返回一段JavaScript做某事

但這裏是我的問題:

似乎的JavaScript將不被執行,除非前臺知道數據類型爲「腳本」,是這樣的:

$.ajax { 
    dataType:"script" 
} 

但提交表單的時候,我不得不使用

$("...").submit() 

所以我不能指定具體的數據類型....

誰能告訴我該怎麼辦...

或者你可以告訴我另一種方式來實現我的目標?

上傳一張圖像,並顯示沒有刷新用Rails 3.2.0 ..

回答

0

我這樣做的方式是調用代碼(即調用$("...").submit())將偵聽隱藏的iframe上的加載事件,然後進行響應;而不是服務器返回自動運行的JavaScript。

在iframe的負載情況下,你可以把響應轉換爲JavaScript對象,如果你正在返回JSON:

// 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

+0

非常感謝!我會試試你的建議! – HanXu 2012-02-01 08:05:59

0

我認爲正確的答案,你的問題是使用下面的代碼

render :inline => '<script type="text/javascript">parent.callback(data)</script>' 
相關問題