2016-11-03 127 views
0

参考我的问题,我想更新一个页面,即刷新页面后每隔15秒无需重新加载它。现在我使用<meta http-equiv="refresh" content="15">它更新页面时重新加载它,这不是一个好方法,因为它重新加载不好看的页面。所以为此,我想使用ajax这将更新/刷新我的网页,无需每15秒后重新加载。Asp.net MVC更新网页,无需重新加载页面15秒后使用AJAX

我的目标是urlhttp://localhost:17104/Home/MultiGraph

我已经搜查了很多文章,发现Ajax是用他的数据来更新页面。我只是想更新/刷新页面无需重新加载

更新的代码:

我用setInterval,并在其中我已经把我的Ajax调用像波纹管

setInterval(function() { 
    $.ajax({ 
     url: '/Home/MultiGraph', 
     type: "POST", 
     success: function (result) { 
      $("#charts").html(result); 
      alert(result); 
     } 
    }); 
    //chart1.redraw(); 
    //alert("hello"); 
}, 8000); 

虽然我警报它显示了我一些可怕的数据

enter image description here

前前后后呃我按ok我得到的波纹管结果

enter image description here

此外,在Ajax调用charts是我div在我的图表放置

<div id="charts"> 
    <div id="container1" style="height: 400px; width:auto"></div> 


    <div id="container2" style="height: 400px; width:auto"></div> 


    <div id="container3" style="height: 400px; width:auto"></div> 


    <div id="container4" style="height: 400px; width:auto"></div> 
</div> 

任何帮助将高度赞赏

+0

你想刷新哪一部分页面? –

+0

@StephenMuecke目标网址,我有图表,所以数据是每隔15-20秒后从一个仪表传来的 – faisal1208

+0

您的意思是整个页面? - 这就像'重新加载' –

回答

1

问题:您正在将布局与您的视图一起拉动。

解决方案:您需要返回一个局部视图时,你永远从Ajax调用要求,否则,你的页面布局沿enitre HTML将被服务器传递。

要检查请求是否来自Ajax,可以按如下方式进行。这只是一个伪代码。

if (Request.IsAjaxRequest()) 
{ 
    return PartialView(); //you can pass in some data into view as PartialView(myModel) 
} 
return View(); 

所以,你可以有相同的ActionResult和所有其他逻辑,只是在末尾添加此if检查全图和局部视图之间切换。

同时要注意:请确保您的视图没有布局设置代码

ie:类似下面的东西。

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

如果你有这一点,并尝试做一个return PartialView();它不会工作,它仍然会回到你的布局。所以请确保您删除布局设置代码行。

之后,已经采取了默认的布局,当你实际上做了return View();当你使用return PartialView();时,将返回一个布局视图。

哪一个是您的默认视图?如果您查看Views文件夹中的文件_ViewStart.cshtml,则可以获取该信息。

+0

在我的代码中,MultiGraph '_MLayout' – faisal1208

+0

@ faisal1208 ok,那么'_ViewStart.cshtml'文件中的默认布局是什么? –

+0

它是'@ {0} {0} {0} Layout =“〜/ Views/Shared/_Layout.cshtml”; }' – faisal1208

0
success: function (result) { 
      $("#charts").html(result); 
      alert(result); 
     } 

其中上面的“result”是一个字符串,代表整个页面......所以它将与重定向到相同的url以刷新页面相同。

问题有哪些您可以指定要做到这一点没有目标元素...即

$('html').replaceWith(result); 

接近,但它不是整个页面。

无论如何,您的主要问题是针对整个页面$(“#charts”)的错误目标进行蒸制,但问题在于,结果中的数据无法达到您想要的效果更改为$('html')

所以我建议你改变从'/ Home/MultiGraph'返回的数据并创建一个新的控制器动作,它只渲染你想要的部分。

这可以用MVC Partialview(“视图名”,视图模型)

希望存档这有助于

相关问题