Ajax请求ASP.NET MVC控制器返回500 - 内部服务器错误。

26 浏览
0 Comments

Ajax请求ASP.NET MVC控制器返回500 - 内部服务器错误。

我有一个视图上的两个select


第一个表示州,当我选择它时,我想执行carregarCidades函数来加载该州的城市,然后将它们加载到另一个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(
                $('').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;
}

我正在调试操作,显然一切都很好:

\"enter

\"enter

但是,在操作返回Json结果后,回调函数在jquery代码中没有被调用,并且我在控制台中得到了500个内部服务器错误。

admin 更改状态以发布 2023年5月23日
0
0 Comments

首先,我会确保您的方法在其声明之前有[WebMethod]属性。

其次,我建议您像这样返回Json:

return Json(result, JsonRequestBehavior.AllowGet);

通常情况下,以上两个问题中的一个或两个会导致500错误。

编辑:

声明为[WebMethod]可能并不必要。

0
0 Comments

您需要将JsonAllowRequestbehavior参数设置为AllowGet,默认值是DenyGet

JsonResult result = Json(dsC.Tables["curretorno"],JsonRequestBehavior.AllowGet);

您可以在这篇文章中了解为什么需要它。

0