2017-04-10 113 views
0

在我的ASP.net MVC應用程序中獲得價值,我有一個按鈕調用控制器操作,需要更長的時間(> 60分鐘)才能完成。爲了保持我的會話活着,我使用了setInterval函數。ASP.net MVC無法從控制器

參考:http://www.dotnetcurry.com/ShowArticle.aspx?ID=453&AspxAutoDetectCookieSupport=1

看法是這樣的:

@Html.DevExpress().Button(settings => 
         { 
          settings.Name = "LoadData"; 
          settings.Text = "Load Data"; 
          settings.ClientSideEvents.Click = string.Format("function(s, e) {{ OnButtonClick(s, e, '{0}', '{1}'); }}", Url.Action("Start", "ImportData", null), Url.Action("alive", "ImportData", null)); 
          settings.UseSubmitBehavior = false; 
         }).GetHtml() 

我OnButtonClick函數如下:

function OnButtonClick(s, e, startUrl, progressUrl) { 
    //debugger; 
    StartActionOnServer(startUrl); 
    setInterval(keepalive, 600000); //every 10 minutes. 
} 

保持活躍的樣子:

function keepalive() 
{ 
    console.log("I am alive"); 
    $.ajax({ 
     type: 'POST', 
     url: '/ImportData/alive', 
     dataType: "text", 
     dataType: 'json', 
     contentType: "application/json; charset=utf-8", 
     success: function (msg) { 
      debugger; 
      console.log("pinging"); 
     }, 
     Error: function (xhr) { 
      debugger; 
      alert(xhr) 
     }, 
     }); 
} 

我的問題是代碼沒有打到我的Controller函數,因爲結果我從來沒有在我的成功塊中得到結果。

success: function (msg) { 
      debugger; 
      console.log("pinging"); 
     }, 

控制器動作功能:

[HttpPost] 
    public ActionResult alive() 
    { 
     var result = "Still Alive"; 
     return Content(result); 
    } 

代替我的硬編碼:執行console.log( 「我還活着」);我想要Controller返回這個。

我的console.log看起來像附着screeshot

enter image description here

任何想法如何擺脫控制器價值?我在做什麼錯在這裏。 謝謝。

+0

你看到控制檯網絡選項卡,查看URL路徑是否正確? – Krishna

+0

''我從來沒有在我的成功塊中得到結果' - '然後你會得到什麼回報?請注意,您可能會忽略錯誤,因爲您錯誤地鍵入了'error'屬性(您有'Error')。瀏覽器調試工具中服務器的實際響應是什麼? – David

+0

這是MVC還是Web-Api? – Greg

回答

0

這解決了我的問題:

function keepalive() 
{ 
    console.log("I am alive"); 
    $.ajax({ 
     type: 'POST', 
     url: '/ImportData/alive', 
     dataType: "text", 
     contentType: "text", 
     success: function (msg) { 
      console.log(msg); 
     }, 
     Error: function (xhr) { 
      alert(xhr) 
     }, 
    }); 
}