0

我正在尝试通过 Jquery Ajax 提交上传多个文件。

一切正常,除了提交后,浏览器会转到表单中指定的 url,即使我添加了Return False.

如果我使用$("#upload").serialize(),而不是 a 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
4

3 回答 3

0

提交事件处理程序通常会获取传递的事件对象。履行

ev.preventDefault();
//and optionally
return false;
于 2012-07-23T11:46:44.013 回答
0

原来代码失败了......我需要包括:

processData: false
contentType: false

防止 JQuery 做一些不那么理想的魔法。

于 2012-07-24T22:02:08.333 回答
0

在您的事件处理函数中,您应该使用e.preventDefault(); 这可以防止默认操作,在您的情况下是表单提交。

于 2012-07-23T11:43:49.803 回答