我正在尝试通过Jquery Ajax提交上传多个文件。
一切正常,除了提交后,浏览器会转到表单中指定的网址,即使我添加了Return False
。
如果我使用$("#upload").serialize(),
代替FormData
,则不会重定向!这是我的Coffeescript代码:
# Initialization code
$("#upload").submit ->
ajaxUpload()
return false
# Handler
ajaxUpload = ->
fd = new FormData()
files = $("#uploadFiles")[0].files
$.each files, (i, file) ->
fd.append("file" + i, file)
$.ajax
type: $("#upload").attr("method"),
url: $("#upload").attr("action"),
data: fd,
# data: $("#upload").serialize(),
success: (data, text, xhr) ->
debug "Success: " + JSON.stringify(data)
loadEventAgain()
error: (xhr, status) ->
debug "Error: " + JSON.stringify(xhr)
alert "done"
return false
答案 0 :(得分:0)
在您的事件处理函数中,您应该使用e.preventDefault();
这可以防止表格提交的默认操作。
答案 1 :(得分:0)
提交事件处理程序通常会获取传递的事件对象。执行
ev.preventDefault();
//and optionally
return false;
答案 2 :(得分:0)
原来代码失败了...... 我需要包括:
processData: false
contentType: false
阻止JQuery做一些不那么令人满意的魔术。