2012-05-03 45 views
4

我需要通過ajax調用局部視圖。我已經嘗試了以下,但我不知道如何完成它。如何在mvc3中通過ajax調用局部視圖

$("#UserName").change(function() { 
     var userid = $("#UserName").val(); 
     var ProvincialStateID = $("#State").val(); 
     var Hobbyid = $("#Hobby").val(); 
     var Districtid = $("#DistrictNames").val(); 
     var Homeid = $("#Hobbyhome_EstablishmentId").val(); 
     var urlperson = '@Url.Action("FetchPersonByUserName")'; 
     $.ajax({ 
      type: "POST", 
      url: urlperson, 
      data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid }, 
      success: function (data) { 
      //Dont know what to write here 
     }); 
    }); 

這裏是我寫在我的控制器功能:

[HttpPost] 
    public ActionResult FetchPersonByUserName(int userid,int stateid,int districtid,int homeid,int Hobbyid) 
    { 
     //Code to fetch the data in the partial using all parameters 
     return PartialView("_LearnerAssociationGridPartial", list); 
    } 

當我在一個下拉點擊AJAX被調用,我想這是通過Ajax調用該函數將其重定向到局部視圖。請幫助我,因爲目前我無法顯示我的部分視圖

+1

[如何在MVC3中通過ajax調用局部視圖]可能的重複(http://stackoverflow.com/questions/10430269/how-to-call-a-partial-view-through-through-ajax-in-mvc3 ) – nemesv

+0

這是一個確切的重複,相同的代碼和其他一切 – glosrob

+0

本帖] [1]很可能會回答你的問題.. [1]:http://stackoverflow.com/questions/5248183/html-partial-vs-html-renderpartial-html-action-vs-html-renderaction –

回答

4

你需要的是像

$.ajax({ 
    type: "POST", 
    url: urlperson, 
    data: { userid: userid, 
      stateid: ProvincialStateID, 
      hobbyid: Hobbyid, 
      districtid: Districtid, 
      homeid: Homeid }, 
    success: function (data) { 
      var result = data; 
      $('targetLocation').html(result); 
    } 
    }); 

它recomended不使用數據直接從可變的,但你可以。 現在,目標位置就是您希望顯示結果的位置。

見這裏的更多信息:

http://api.jquery.com/jQuery.ajax/

至於慢取數據,嘗試optimalize查詢

更新 對於NHibernate的運行速度慢,儘量http://www.hibernatingrhinos.com/products/nhprof這是NHibernate的探查,對付費版本,或者嘗試使用sql profiler來查看執行的查詢是什麼,通常由於查詢的複雜性,您可以獲得更多的預期結果,或者查詢速度非常慢。

+0

我這樣做你建議,但你能告訴我什麼我寫在控制器功能(urlperson) –

+0

@MVC_Nhibernate不知道你是什麼意思? – cpoDesign

+0

het thanx它只是在工作,只是數據ws gettin取得緩慢 –

2

我不明白你的意思是重定向到parial視圖。通常人們使用ajax和Partial視圖來獲取頁面的一部分而不刷新頁面(您可能已經在這個網站/ facebook/twitter等中看到了這種行爲)。所以我想你可能想顯示你正在抓取的數據異步地顯示在當前頁面的一部分中。你可以在你的成功處理程序

$.ajax({ 
     type: "POST", 
     url: urlperson, 
     data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid }, 
     success: function (data) { 
      $("#divUserInfo".html(data); 
     } 
}); 

Assumung你必須在當前頁面ID divUserInfo一個div。

如果你真的想在ajax文章後重定向,你可以這樣做。

$.ajax({ 
     type: "POST", 
     url: urlperson, 
     data: { userid: userid, stateid: ProvincialStateID, hobbyid: Hobbyid, districtid: Districtid, homeid: Homeid }, 
     success: function (data) { 
      window.location.href="Why-I-need-Ajax-Then.php"; 
     } 
}); 

就個人而言,我不使用HttpPost(無論是在客戶端和服務器),如果是GET方法的一些數據。我簡單地使用jquery獲取或加載。

$.get("yourUrl", { userid: userid, stateid: ProvincialStateID } ,function(data){ 
    $("#divUserInfo".html(data); 
}); 
+0

yai在第一個Ajax函數和數據庫中建議你做什麼,但是我可以告訴你我應該在控制器中寫什麼函數或shal我離開它,因爲它是 –

+0

@MVC_Nhibernate :我不知道你想在你的控制器中做什麼。如果您正在尋找更改POST方式以獲取某些信息的GET方式(例如:GetUser),只需將方法名稱上方的[HttpPost]動詞取出即可。默認情況下它是GET方法。請記住,沒有任何HttpPost調用可以訪問此mehod(從ajax和正常形式的帖子) – Shyju

+0

嘿你首先jquery工作thanx噸! –