2016-11-20 58 views
0

所以我做一個層疊DropDownList的,這裏是我的代碼,MVC 4 json通過ajax無法正常工作?

控制器:

public JsonResult GetStates(string id) 
    { 
     List<SelectListItem> ListOfStates = new List<SelectListItem>(); 
     var TempSlist = this.GetStateList(Convert.ToInt32(id)); 
     var StateData = TempSlist.Select(m => new SelectListItem() 
      { 
       Text = m.SName, 
       Value= m.SID.ToString(), 
      }); 

     return Json(StateData, JsonRequestBehavior.AllowGet); 
    } 

    public IList<StateList> GetStateList(int CID) 
    { 
     GetCSCTContext DB = new GetCSCTContext(); 

     return DB.StateLists.Where(m => m.CID_FK == CID).ToList(); 
    } 


} 

查看

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("#StatesDDL").hide(); 
      $('#CntryDDL').change(function() { 
       $('#StatesDDL').show(); 

      $.ajax({ 

       type: 'POST', 
       url: '@Url.Action("GetStates", "Register")', 
       dataType: 'json', 
       data : 
        { 
         id: $('#CntryDDL').val() 
        }, 
       success: function (states) 
       { 
        alert(CID); 
        $.each(states, function (i, state) { 
         $('#StatesDDL').append('<option value="' + state.Value + '">' 
          + state.Text + '</option>'); 
        }); 
       }, 
      }); 

我一直試圖讓這個AJAX部分工作,但我沒有看到任何錯誤通過瀏覽器,當我嘗試在我的控制器做斷點時,似乎它不會觸發函數控制器。

+0

它是一個POST調用或GET打電話? – Vinoth

回答

0

你提到ajax調用在調試時不觸發。所以要麼你可以寫:

GET方法而不是POST作爲你的控制器函數也採用參數作爲get參數。

public JsonResult GetStates(string id) // get -> string id 

,或者您可能喜歡:

public JsonResult GetStates(){ 
    string id = Request.Params["id"] 
    ........ 
}