2016-04-14 171 views
4

我有一个观点这两个select S:Ajax请求的asp.net的MVC控制器返回500 - 内部服务器错误

<select class="input-sm form-control input-s-sm inline" onchange="carregarCidades()" id="comboEstado"> 
    ... 
</select> 

<select class="input-sm form-control input-s-sm inline" id="comboCidade"> 
    ... 
</select> 

第一所代表的国家,当我选择它,我要执行的carregarCidades函数可以加载该属性的城市,并在另一个选择中加载它们。下面是函数:

function carregarCidades() { 
    var url = "@Url.Action("CarregarCidades", "Usuario")"; 

    var estado = $("#comboEstado").find(":selected").text(); 

    $.get(url, { pEstado: estado }, function (cidades) { 
     $("#comboCidade").html(""); // clear before appending new list 
     $.each(cidade, function (i, cidade) { 
      $("#comboCidade").append(
       $('<option></option>').val(cidade.id_cidade).html(cidade.cidade)); 
     }); 
    }); 
} 

现在,这里是CarregarCidades行动在UsuarioController:

public ActionResult CarregarCidades(string pEstado) 
{ 
    string cCidades = oVFP.BuscaCidade(pEstado); 

    DataSet dsC = new DataSet(); 
    dsC.ReadXml(new StringReader(cCidades)); 

    JsonResult result = Json(dsC.Tables["curretorno"]); 
    return result; 
} 

我调试的动作,显然一切正常:

enter image description here enter image description here

但是,在Action返回Json结果之后,并没有在jquery c上调用回调函数颂歌和我的控制台中有500内部服务器错误。

+0

你说的服务器方法工作正常。你在哪里得到500错误?在调用相同的操作方法时?您在相应请求的“响应”选项卡中获得了哪些其他信息? – Shyju

+0

我在Chrome的控制台收到错误,说我的ajax请求中发生错误。 – gabsferreira

+0

Ehsan的回答将解决它。 – Shyju

回答

1

我首先要确保你的方法在其声明之上有[WebMethod]属性。

我建议的第二件事是回到您的JSON是这样的:

return Json(result, JsonRequestBehavior.AllowGet); 

通常是一个或两个的这些问题,让你一个500错误。

编辑:

声明它作为一个[WebMethod]可能没有必要。

+1

这是mvc,我们不需要webmethod属性 –

相关问题