我用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 回答
我找到了解决方案 . 我只需要删除Ajax请求中的dataType属性 . 使它看起来像这样:
从jQuery AJAX调用执行Rails javascript响应的数据类型是
script