7 Stimmen

Jquery-Formular-Plugin Datei-Upload

Ich habe ein Problem mit dem Jquery Form Plugin. Ich versuche, eine Datei asynchron hochzuladen, aber es wird nicht das Formular senden. html markup und javascript code sind wie unten

<form id="fileUploadForm" method="post" action="Default.aspx" enctype="multipart/form-data">
<input type="text" name="filename" />
<input type="file" id="postedFile" name="postedFile" />
<input type="button" value="Submit" onclick="UploadFile();" />
</form>

$(document).ready(function() {

        $('#fileUploadForm').ajaxForm();            
    });

function UploadFile() {

        var options =
        {                
            url:"Default.aspx",                
            beforeSend: ShowRequest,
            success: SubmitSuccesfull,
            error:AjaxError                               
        };            
        $("#fileUploadForm").ajaxSubmit(options);
        return false;
    }. 

Ich habe ein anderes Testformular, das nur ein Textfeld enthält, und es funktioniert gut. Auch wenn ich die Zeile input type="file"... auskommentiere, funktioniert das obige Formular einwandfrei. Was ist das Problem mit dem Eingabetyp Datei? Irgendeine Idee?

8voto

Nick Craver Punkte 609016

Kurz gesagt:

<input type="file" />

Kann nicht über Ajax übermittelt werden, es muss ein vollständiges Postback sein. Traditionell verwenden Sie einen iFrame für diese, wenn Sie AJAX-Stil Verhalten wollen. Ich habe ein paar Lösungen für diese verwendet, ohne zu wissen, welche Plattform Sie auf sind, SWFUpload ist in der Regel eine gute Option.

Hier ist ein Beispiel für eine Korrektur in einem vollständigen Dokument:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="Javascript/jquery-1.3.2.js"></script>
    <script type="text/javascript" src="Javascript/jquery.form.js"></script>
    <script type="text/javascript">
        $(function() {            
          $('#fileUploadForm').ajaxForm({                 
            beforeSubmit: ShowRequest,
            success: SubmitSuccesful,
            error: AjaxError                               
          });                                    
        });            

        function ShowRequest(formData, jqForm, options) {
          var queryString = $.param(formData);
          alert('BeforeSend method: \n\nAbout to submit: \n\n' + queryString);
          return true;
        }

        function AjaxError() {
          alert("An AJAX error occured.");
        }

        function SubmitSuccesful(responseText, statusText) {        
          alert("SuccesMethod:\n\n" + responseText);
        }    
    </script>
</head>
<body>
    <form id="fileUploadForm" method="POST" action="Default.aspx" enctype="multipart/form-data">
      <input type="text" name="filename" />
      <input type="file" id="postedFile" name="postedFile" />
      <input type="submit" value="Submit" />
    </form>
</body>
</html>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X