我有一个表单,需要将.csv文件提交给服务器,然后将其中的单词追加到我页面中的textarea。我正在使用Remotipart使用AJAX上传.csv,但我无法在服务器响应中获取javascript来执行。以下是我的代码的相关部分:
表格:
=form_tag(upload_canvas_words_admin_page_widget_widget_instance_path(widget.page, widget),:method=>'post',:remote=>true,:multipart=>true,:class=>"upload_words_csv") do
= label_tag "Upload File"
= file_field_tag "file"
= submit_tag "Upload"
控制器:
def upload_canvas_words
@csv_text = params[:file].read
end
.js.haml文件:
= remotipart_response do
- if remotipart_submitted?
alert('#{@csv_text}');
alert('!');
- else
alert('WHYYYYY?');
当我看到响应时,我看到javascript被包装在一堆html中,我认为这与iFrame传输有关。但javascript实际上从未执行过。
答案 0 :(得分:0)
请参阅此问题。并尝试遵循此处给出的解决方案。
https://github.com/JangoSteve/remotipart/issues/89
所以会发生的是,响应是通过textarea中的html实体(如"
)到达浏览器。当提取用于评估的js代码时,html实体将被它们各自的字符替换(例如“to”)。
这是textarea的特征。所以它没有被执行
答案 1 :(得分:0)
将data: {type: :script}
添加到表单应该是修复