2016-09-16 161 views
-1

我一直在試圖從我的控制器中的方法獲取數據。爲了從控制器獲取數據,我編寫了AJAX代碼,但似乎沒有做這項工作(不是從控制器提取數據)。也許我在AJAX請求方法的控制器中丟失了一些東西。使用ajax請求從MVC中的控制器獲取數據

我有兩個下拉並排。我試圖根據用戶選擇的第一個下拉列表選擇從控制器獲取數據來填充第二個下拉列表。

我真的很感謝這方面的一些指導或幫助。

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調用:它缺少控制器名稱

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

你還寫drFilter(result)沒有任何參數功能

+1

感謝通知我 –

+0

這可能或可能不重要。如果操作與調用的控制器在同一個控制器上,則不需要執行此操作 – Liam

+0

您是否可以更詳細地解釋函數中的參數,因爲我對ajax不熟悉。 – user5813072

相關問題