簡體   English   中英

Ajax請求asp.net mvc控制器返回500 - 內部服務器錯誤

[英]Ajax request for asp.net mvc controller returning 500 - internal server error

我在視圖上有這兩個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內部服務器錯誤。

您必須將JsonAllowRequestbehavior參數添加到AllowGet ,默認情況下它是DenyGet

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

您可以在這篇文章中閱讀有關為什么需要它的信息

我首先要確保您的方法在其聲明之上具有[WebMethod]屬性。

我建議的第二件事就是回復你的Json:

return Json(result, JsonRequestBehavior.AllowGet);

通常,這些問題中的一個或兩個都會導致500錯誤。

編輯:

將其聲明為[WebMethod]可能沒有必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM