2013-04-07 31 views
1

我試圖導入與AJAX文件,使用下面的插件 -MVC,C#應用程序試圖導入文件與AJAX

http://malsup.github.com/jquery.form.js

基於下面的例子 -

http://malsup.com/jquery/form/progress.html

我的看起來像這樣 -

<form action="/MyController/MyAction" enctype="multipart/form-data" id="myFormId" method="post">   
    <input type="file" name="file" id="file"> 
    <input type="submit" value="Import File"> </div> 
</form> 
<script type="text/javascript"> 
    window.onload = function() { 
     (function() { 
      $('#myFormId').ajaxForm({ 
       beforeSend: function() { 
        alert('before send'); 

       }, 
       success: function() { 
        alert('success'); 
       }, 
       complete: function (xhr) { 

        alert('xhr.responseText=' + xhr.responseText); 
       } 
      }); 

     })(); 
    } 
</script> 

從未調用window.onload = function(){}中的javacsript。調用MyAction,然後瀏覽器只顯示MyAction的JSON行爲結果。

任何人都可以告訴我我做錯了什麼或建議採取不同的方式嗎? 非常感謝!

回答

3

由於您編寫的腳本位於表單之後,因此無需將其放入window.onload處理程序中。以下罰款應該工作:

@using (Html.BeginForm("MyAction", "MyController", FormMethod.Post, new { enctype = "multipart/form-data", id = "myFormId" })) 
{ 
    <input type="file" name="file" id="file"> 
    <input type="submit" value="Import File"> </div> 
} 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
<script src="http://malsup.github.com/jquery.form.js"></script> 
<script type="text/javascript"> 
    (function ($) { 
     $('#myFormId').ajaxForm({ 
      beforeSend: function() { 
       alert('before send'); 
      }, 
      success: function() { 
       alert('success'); 
      }, 
      complete: function (xhr) { 
       alert('xhr.responseText=' + xhr.responseText); 
      } 
     }); 
    })(jQuery); 
</script> 

還要注意,它確保的jquery.js是jquery.form.js插件,它需要使用它的腳本之前包括之前已經包含了很重要的。在我已經展示的例子中,我還將jQuery作爲參數傳遞給匿名函數,以便確保與您可能使用的其他插件沒有衝突,並且可能劫持了$函數。

此外,我會建議您使用JavaScript調試工具,如FireBug或Chrome開發人員工具欄,以確保所有腳本正確包括(沒有404),並且您沒有任何重複的腳本或JavaScript錯誤。

+0

工作正常!非常感謝你,達林!你爲我節省了很多壓力! – 2013-04-07 17:27:54

相關問題