2016-09-16 3 views
-1

コントローラのメソッドからデータを取得しようとしました。私はコントローラからデータを取得するためにAJAXコードを書いていますが、それは仕事をしていないようです(コントローラからデータを取得しない)。たぶん私はAJAXリクエストメソッドのコントローラのいずれかで何かを見逃している可能性があります。mvcのコントローラからデータを取得するためにajaxリクエストを処理しています

私はお互いに2つのドロップダウンを持っています。私は、ユーザーが選択する最初のドロップダウンの選択に基づいてコントローラからデータを取得することで、2番目のドロップダウンにデータを挿入しようとしています。

私は本当にこの問題についていくつかのガイダンスや助けに感謝します。

public ActionResult ptdrloFilter(int id) 
{ 
    int customerId = (int)System.Web.HttpContext.Current.Session["CustomerID"]; 
    IUnitOfWork uow = DataAccess.GetUnitOfWork(); 
    using (ManageProductTemplate ptLogic = new ManageProductTemplate(ref uow)) 
    { 
     List<ProductTemplate> currentpt = ptLogic.GetBy(x => x.ProductTemplateID == id); 
     List<string> returnDisString = new List<string>(); 
     List<string> pt = new List<string>(); 

     var getDRString = (from drule in Drulelogic.GetCustomerProdIndexString(customerId, id).List 
          select new { drule.Name, drule.DistributionRuleID }).ToList(); 

     foreach (var item in getDRString) 
     { 
      returnDisString.Add(item.Name); 
     } 
     returnDisString = returnDisString.Distinct().ToList(); 
     return Json(returnDisString, JsonRequestBehavior.AllowGet);    
    } 
} 
function drFilter() { 
    $.ajax({ 
     type: "json", 
     data: { id: 1 }, 
     url: @Url.Action("ptdrloFilter"), 
     success: function(result) { 
      drFilter(result); 
     } 
    }); 

    var dataInJSONForm = JSON.stringify(result); 
    var datainJSObjectForm = JSON.parse(dataInJSONForm); 

    $('#dd1').on('change', function (e) { 
     var valueChosenInddl2 = $(this).val(); 
     var options = datainJSObjectForm[valueChosenInddl2]; 
     var $subselect = $('#subselect'); 
     $subselect.children().detach(); 

     for (var property in options) { 
      $subselect.append($('<option>', { 
       value: property, 
       text: options[property] 
      })); 
     }; 
    }); 
} 
<div class="editor-field"> 
    <select id="dd1"> 
     <option value="Default">Default</option> 
     <option value="PTDR">PT/DR</option> 
     <option value="All">All</option> 
    </select> 

    <select id="subselect"></select> 
</div> 

答えて

1
は、あなたのAJAX呼び出しを変更し

:それはあなたがまたdrFilter(result)を書きましたが、ありません任意のパラメータが通知する

+1

おかげで機能であり

$.ajax({ type: "json", data: {id: 1}, url:'@Url.Action("ptdrloFilter","ControllerName")', success: function(result) { // }, error:function(ex) { // } }); 

コントローラ名がありません私は –

+0

これは問題かもしれません。アクションが呼び出し側と同じコントローラ上にある場合、これを行う必要はありません – Liam

+0

私はajaxを初めて使用しているため、関数のパラメータについて詳しく説明できますか? – user5813072

関連する問題