所以我試圖用jQuery從ajax調用插入數據。jQuery RJS插入字符串與dom
我實際上使用jquery.form插件,並提交了一個與dataType: 'script'
提交的ajax表單。
響應是一個包含<%= javascript_escape(render ...) %>
erb標記的jquery表達式(類似於railscasts第136集指示要做的事情)。然而,最終的結果是渲染的全文被插入,就像插入到頁面中的內容一樣,作爲文本而不是dom元素。
事實上渲染器在開始時有一些換行符是原因嗎?
DOM文字:"\n \n <li>....</li>"
我也試過有jQuery的只是讀取響應爲腳本並執行它,並且使用了基於原型的RJS的東西,同樣的效果,文本插入到DOM。有沒有什麼原因會導致這種行爲?
澄清一下:
我response.js.erb是
jQuery("#content").append("<%= escape_javascript(render(:partial => "widgets")) %>");
jQuery("#information").text("Finally, something happened!");
追加()調用內部的全文作爲文本插入到#內容。
更新:
我一直在對這個問題進行一些研究。原因是爲什麼rails逃避<>字符是因爲它認爲它正在呈現常規的.html文件。原因是它沒有指示.js即將到來,因爲該帖子是使用iframe完成的(該帖子包含一個文件)。如果我在請求的末尾添加.js,我可以執行respond_to do |format| format.js
,但它不支持http帖子。有沒有辦法將其配置爲接受針對某個操作的.js請求的帖子?
不是,我考慮過改變對HTML的響應,只是讓腳本將它注入適當的位置,但我想要更多的RJS風格行爲。看到我的澄清。 – 2010-04-13 20:23:22
看起來這將是必須的答案。 Rails似乎不支持在不進行HTML實體轉義的情況下渲染erb模板。因此,當輸出發送到iframe時,所有內容都會被轉義並且無法使用。 – 2010-04-14 14:40:13