xhr请求后无法添加通知。轨道

时间:2014-02-17 10:34:02

标签: javascript ruby-on-rails ruby xmlhttprequest

添加文件并右键重定向,但不另行通知。如果您不使用xhr,请注意显示。

的application.js

var files = evt.target.files || evt.dataTransfer.files;

// files is a FileList of File objects. List some properties.
for (var i = 0, f; f = files[i]; i++) {
   var xhr = new XMLHttpRequest();
   xhr.open("POST", 'report_drag', false);
   xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
   xhr.setRequestHeader("X_FILENAME", "file." + f.name.split('.').pop());
   xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
   xhr.send(f);
}

controller.rb

def report_drag
    filename = "report/#{DateTime.now.year}-#{DateTime.now.month}/" + "#{Vendor.where(id: current_user.id).first.title}" + "#{File.extname("#{request.headers['HTTP_X_FILENAME']}")}"
    File.open(File.join(filename), "wb") { |f| f.write(request.body.read) }
    redirect_to report_url, notice: "Файл успешно добавлен."
end

1 个答案:

答案 0 :(得分:0)

当您从浏览器发出简单请求时(使用linkbutton,或只是在地址栏中写入),响应将替换当前页面并呈现而不是它。

当您使用XHR时,浏览器不会更改当前位置并且不会呈现任何内容 - 它假定调用者(javascript代码)负责读取响应,并从中理解。

如果您想与服务器进行异步通信,并使用其响应重新呈现页面(部分),请阅读此tutorial for using rails with Ajax