2009-11-11 46 views
0

當我刪除jQuery腳本代碼並提交時,代碼成功上傳文件。但通過以下代碼,輸出div中的文本消失,而來自其他頁面的新文本也不會寫入其中。使用jquery上傳文件(不帶flash插件)

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("[name='video-submit']").click(function() { 
     $.ajax({ 
      type: "POST", 
      enctype: 'multipart/form-data', 
      data: $("#VideoForm").serialize(), 
      url: "cp.cs.asp?Process=UploadVideo", 
      success: function(output) { 
       $("#output").html(output); 
      }, 
      error: function(output) { 
       $("#output").html(output); 
      } 
     }); //close $.ajax(
    }); 
}); 
</script> 
    <div id="form"> 
     <form method="post" id="VideoForm"> 
      <fieldset> 
      <div class="required">     
       <label for="VideoURL">Video File</label> 
       <input type="file" size="23" name="VideoFile"> 
       <input type="button" name="video-submit" id="video-submit" value="Upload" /> 
      </div> 
      </fieldset> 
     </form> 
      <div id="output"> 
      fds 
      </div> 
+0

錯誤控制檯中是否有任何消息? – 2009-11-11 18:02:00

+0

你也可以嘗試使用超鏈接而不是按鈕嗎?這避免了默認提交行爲在這裏的可能性。 – 2009-11-11 18:08:41

回答

3

不能使用$("#VideoForm").serialize(),因爲這將只序列化標準輸入而不是文件上傳文件。您可能需要使用plugin

順便說一句,這是非常明顯的。想象一下,如果這是可能的。如果您訪問惡意網站,則可能會在未經用戶許可的情況下序列化並從您的硬盤上竊取文件。

+0

Uploadify使用flash。 – Dan 2009-12-15 14:32:43

1

您不能異步上傳文件。

一種方法,你可以嘗試是把一個隱藏的iframe在你的頁面,你應該形成指向此iframe:

<form method="post" action="cp.cs.asp?Process=UploadVideo" target="hiddenIframe"> 

<iframe style="display:none"> 

你cp.cs.asp文件可以在文件上傳到服務器,然後將路徑返回到剛剛上傳的文件,然後可以使用所需的值更新父頁面,並根據需要顯示上傳的圖像。這樣你就可以上傳一個文件,並且用戶感覺它是異步完成的。

你可以通過一個簡單的例子來查看這個網站。

http://www.openjs.com/articles/ajax/ajax_file_upload/

服務器代碼是在PHP,但你可以很容易地適應這個以ASP,ASP.NET,ASP.NET MVC等..

希望它能幫助!

相關問題