在我的RoR应用程序中,我有一个带有按钮的dataTable,该按钮触发包含多部分表单的Bootstrap模式。我很难通过AJAX调用将上传的文件(在本例中为图像)传递给我的RoR方法。我尝试过使用formData()
方法,但是我的AJAX调用甚至没有使用我以前没有合并formData()
的方法。我可以通过将表单合并到实际视图中来完成我的任务,但我需要将此表单作为模态的一部分。任何帮助是极大的赞赏。我还有一个问题是无法验证CSRF令牌的真实性,但这可能是我必须解决的另一个问题。
HTML
<form id="upload_form" name="upload_form" action="/admin/jobs/job_screenshot"
method="post" multipart="true">
<input id="j_id" type="hidden" value="538f7b5a9bb8f9a5ba000045">
<div class="row-fluid">
<ul>
<li>Select Screenshot to Upload</li>
<li>
<input accept="image/png,image/gif,image/jpeg" type="file">
</li>
<li>
<input id="ss_submit" class="btn button btn-success" type="submit" value="Upload Screenshot">
</li>
</ul>
</div>
</form>
的jQuery
$(document).on("submit", "#upload_form", function(e) {
var formData;
formData = new FormData($(this)[1]);
$.ajax({
url: "/admin/jobs/job_screenshot",
type: "POST",
data: formData,
cache: false,
contentType: false,
processData: false,
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRF-Token", $("meta[name=\"csrf-token\"]").attr("content"));
}
});
});