我在视图上有这两个select
:
<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>
第一个代表一个State,当我选择它时,我想执行carregarCidades
函数来加载该stat的城市,然后将它们加载到另一个select中。这是功能:
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));
});
});
}
现在,这是UsuarioController中的CarregarCidades操作:
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;
}
我正在调试动作,显然一切正常:
但是,在Action返回Json结果之后,在jquery代码上没有调用回调函数,我的控制台中出现了500内部服务器错误。
答案 0 :(得分:4)
您必须JsonAllowRequestbehavior
参数AllowGet
,默认情况下为DenyGet
:
JsonResult result = Json(dsC.Tables["curretorno"],JsonRequestBehavior.AllowGet);
答案 1 :(得分:1)
我首先要确保您的方法在其声明之上具有[WebMethod]
属性。
我建议的第二件事就是回复你的Json:
return Json(result, JsonRequestBehavior.AllowGet);
通常,这些问题中的一个或两个都会导致500错误。
编辑:
可能没有必要将其声明为[WebMethod]
。