2017-04-10 83 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) 
     }, 
    }); 
}