如何防止在Ajax提交后将浏览器重定向到FORM操作?

时间:2012-07-23 11:39:06

标签: jquery ajax coffeescript

我正在尝试通过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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

ev.preventDefault();
//and optionally
return false;

答案 2 :(得分:0)

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

processData: false
contentType: false

阻止JQuery做一些不那么令人满意的魔术。