2016-11-20 61 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"] 
    ........ 
}