2010-02-20 97 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

相关问题