首页 文章

尽管在rails中呈现,但.js.erb文件仍未执行

提问于
浏览
2

我用rails和haml . 我通过Ajax post将数据发送到rails中的控制器:

$.ajax({
type: 'POST',
url: '/preview-image-upload',
processData: false,
contentType: false,
dataType : 'json',
data: data
});

然后我执行数据并在控制器中渲染js:

respond_to do |format|
 if @previewupload.save
  format.js
 end

对象保存正确 . 此外,根据服务器日志正确呈现.js.erb文件:

Rendered path/preview_image_upload.js.erb (0.2ms)
Completed 200 OK in 603ms (Views: 8.1ms | ActiveRecord: 8.5ms)

出于测试原因,我在preview_image_upload.js.erb文件中发出警报:

alert("Hello World");

但没有任何反应 . 它看起来像.js.erb文件已呈现但未执行 .

从这里尝试解决方案:js.erb not executing javascript but is processed rails

{ render layout: false, content_type: 'text/javascript' }

但那没用 .

2 回答

  • 3

    我找到了解决方案 . 我只需要删除Ajax请求中的dataType属性 . 使它看起来像这样:

    $.ajax({
    type: 'POST',
    url: '/preview-image-upload',
    processData: false,
    contentType: false,
    data: data
    });
    
  • 0

    从jQuery AJAX调用执行Rails javascript响应的数据类型是 script

相关问题