2012-05-03 12 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を介して呼び出される関数をしたいです部分的な見方。現在、私は部分ビューを表示することができないので、私を助けてください

+1

[MVC3でajaxを通して部分的なビューを呼び出す方法](http://stackoverflow.com/questions/10430269/how-to-call-a-partial-view-through-ajax-in-mvc3 ) – nemesv

+0

それは .. [1]最も可能性の高いあなたの質問に答えるだろう正確な複製、同じコードと他のすべて – glosrob

+0

[この投稿] [1]:http://stackoverflow.com/questions/5248183/html-part-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); 
    } 
    }); 

のようなものです。 ターゲットの場所は、結果を表示したい場所です。

ここでより多くの情報を参照してください:

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

フェッチデータを遅くすると、

クエリをoptimalize試す更新 NHibernateのが遅い実行するために、のために、NHibernateのプロファイラであるhttp://www.hibernatingrhinos.com/products/nhprofを試してみてくださいSQLプロファイラを使ってクエリが実行されているかどうかを確認してください。多くの場合、クエリの複雑さのためにクエリの実行速度が遅くなります。

+0

私はこれを提案しましたが、あなたがcontrller関数(urlperson)で何を書いているのか教えてください。 –

+0

@MVC_Nhibernateはどういう意味ですか? – cpoDesign

+0

het thanxそれはデータws gettinが遅くフェッチされた –

2

私はパリティビューへのリダイレクトの意味を理解していません。通常、人々はajaxと部分的なビューを使ってページを更新せずにページの一部を取得します(このサイト/ facebook/twitterなどでこの種の動作を見たことがあります)。だからおそらく、取得しているデータ非同期的に現在のページの一部に表示されます。あなたは、あなたの現在のページ内のid divUserInfoとdiv要素を持っているあなたの成功ハンドラ

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

Assumungでそれを行うことができます。

実際に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を取得または読み込みをsimpy使用します。あなたが必要なもの

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

yaiは、最初のAjax関数で提案されたものとdat watを正確に探していましたが、コントローラで何を書きますか関数またはshal私はそれをそのまま残す –

+0

@MVC_Nhibernateあなたのコントローラで何をしたいのか分かりません。いくつかの情報(例:GetUser)を取得するためのPOST方法をGET方法に変更したい場合は、メソッド名の上の[HttpPost]動詞を取り出してください。デフォルトではGETメソッドです。 HttpPost呼び出しのどれもがこのmehodにもうアクセスできないことを覚えておいてください。(ajaxと普通の形式の投稿の両方から) – Shyju

+0

ちょっと最初のjqueryがうまくいきました! –

関連する問題