2010-02-20 96 views
7

我有一個jQuery表單插件的問題。 我嘗試異步上傳文件,但不提交表單。 HTML標記和JavaScript代碼就像下面jquery表單插件文件上傳

<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; 
    }. 

我有另一個測試的形式,它只有一個文本框在裏面,它工作正常。另外,當我評論輸入類型=「文件」...行上面的表單工作正常。輸入類型文件有什麼問題? 任何想法?

回答

8

簡而言之:

<input type="file" /> 

無法通過AJAX提交,它必須是一個完整的回發。傳統上,如果你想要AJAX風格的行爲,你可以使用iFrame。我已經使用了一些解決方案,不知道你在哪個平臺上,SWFUpload通常是一個不錯的選擇。

這裏有一個修復的完整文件的例子:

<!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> 
+2

感謝您的答覆 你可以檢查 http://jquery.malsup.com/form/#file-upload 上午下面的鏈接。我誤解了它? – mehmet6parmak 2010-02-20 13:48:11

+0

@ mehmet6parmak - 添加上面的替代方法,給它一個鏡頭,看看你是否仍然有問題。您是否使用FireBug或其他軟件來查看是否發生了任何操作/錯誤? – 2010-02-20 15:03:45

+0

我沒有使用螢火蟲,但我調試它在視覺工作室,但我不明白髮生了什麼在jquery裏面(事實上,你上面提到它創建了一個iframe這是我唯一明白的東西=))。我試圖使用jQuery的錯誤處理程序但該方法從未執行過。如果我發現問題,我會在這裏再次寫下感謝您的興趣。 – mehmet6parmak 2010-02-20 15:47:02

相關問題