2016-11-03 128 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(「視圖名」,視圖模型)

希望存檔這有助於

相關問題