Ajax请求的asp.net的MVC控制器返回500 - 内部服务器错误
问题描述:
我有一个观点这两个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;
}
我调试的动作,显然一切正常:
但是,在Action返回Json结果之后,并没有在jquery c上调用回调函数颂歌和我的控制台中有500内部服务器错误。
答
你必须JsonAllowRequestbehavior
参数AllowGet
,默认情况下它是DenyGet
:
JsonResult result = Json(dsC.Tables["curretorno"],JsonRequestBehavior.AllowGet);
你可以阅读有关Why it is needed on this post。
答
我首先要确保你的方法在其声明之上有[WebMethod]
属性。
我建议的第二件事是回到您的JSON是这样的:
return Json(result, JsonRequestBehavior.AllowGet);
通常是一个或两个的这些问题,让你一个500错误。
编辑:
声明它作为一个[WebMethod]
可能没有必要。
+1
这是mvc,我们不需要webmethod属性 –
你说的服务器方法工作正常。你在哪里得到500错误?在调用相同的操作方法时?您在相应请求的“响应”选项卡中获得了哪些其他信息? – Shyju
我在Chrome的控制台收到错误,说我的ajax请求中发生错误。 – gabsferreira
Ehsan的回答将解决它。 – Shyju