0

JqueryAjax送信を介して複数のファイルをアップロードしようとしています。

送信後、。を追加しても、ブラウザはフォームで指定されたURLに移動することを除いて、すべて正常に機能し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
4

3 に答える 3

0

通常、送信イベントハンドラーは、渡されたイベントオブジェクトを取得します。実行

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

イベントハンドラー関数では、これを使用する必要がありますe.preventDefault(); 。これにより、フォームの送信であるデフォルトのアクションが防止されます。

于 2012-07-23T11:43:49.803 に答える
0

コードが失敗していたことが判明しました...含める必要がありました:

processData: false
contentType: false

JQueryがあまり望ましくない魔法を行うのを防ぐため。

于 2012-07-24T22:02:08.333 に答える