2013-08-19 35 views
0

我試圖讓異步jQuery獲取到MVC Action來返回視圖。出於某種原因,雖然它訪問該操作,但它不呈現該視圖。從jQuery AJAX返回視圖獲取操作

這是jQuery的:

function showArchive(url) { 
    var moreRecentThanDate = $("#chooseDate").val(); 

    $.get(url, { moreRecentThan: moreRecentThanDate }); 
} 

,這是行動:

[HttpGet] 
    public ActionResult ShowArchive(DateTime moreRecentThan) 
    { 
     List<NewIndexViewModel> model = Service.GetArchives(moreRecentThan); 
     ViewBag.IsArchive = true; 

     return View("Index", model); 
    } 

PS:我把這個jQuery的從一個特設的模式彈出;

回答

0

你應該重視的結果,用語法之類的地方:

$.get(url, { moreRecentThan: moreRecentThanDate }).done(function(data) { 
    $('.result').html(data); 
)}; 
+0

像@ Scotty.NET的回答一樣的問題:我想以某種方式刷新頁面,如果可能的話(這聽起來真的很愚蠢,我知道這是一個AJAX GET)。 –

+0

刷新你可以使用純Javascript'location.reload();'如果它對你有意義 – Daniele

+0

謝謝,我只是忘記我可以設置location.href屬性。謝謝! –

0

如有疑問,請檢查jQuery的文檔,get(),倒數第二個例子是你想要什麼,我相信..

$.get(url, { moreRecentThan: moreRecentThanDate }) 
.done(function(data) { 
    $('#myElem').append(data); 
    // or $('#myElem').html(data); 
}); 
+0

我需要的是裝載上述視圖,刷新,而不是僅僅結果追加到視圖的元件。它通過POST工作得很好,但我收到了使用GET的要求。 –

+0

您不需要執行**刷新**,或者如果您不想執行'reload()',只需將html添加或替換爲現有的目標元素即可。 –

0

Jquery的部分

$.get(url, { moreRecentThan: moreRecentThanDate }, function(data) { 

//回調或響應 $('#details_Div')。replaceWith(data);

}); 

其中用戶控制器有一個名爲動作細節做:

public ActionResult Details(int id) 
{ 
    //create a model 

    return PartialView("UserDetails", model); 
} 

PartialView在這裏很重要。

這是假設你的局部視圖是一個具有id detailsDiv的容器,這樣你就可以用調用結果的內容替換整個事物。

的UserDetails局部視圖 http://evolpin.wordpress.com/2011/04/26/asp-net-mvc-partial-view-and-ajax-real-world-example/

<div id="details_Div"> 
    <HTML will be replaced once the ajax is completed> 
</div>