为什么我的jQuery函数getJSON没有调用我的函数回调



我有这个javascript代码:

$(document).ready(function(){
        $("#EstadoId").change(function(){
            listaCidade($(this).val());
        });
    });
    function listaCidade(uf) {
        $.getJSON("@Url.Action("ListaCidade")/" + uf, listaCidadeCallBack);
    }
    function listaCidadeCallBack() {
        alert('sucesso');
    }

一切正常。。。getJSON正在调用我的操作"ListaCidade",但它并没有调用我的"listaCidadeCallBack"。

行动的结果是

 public ActionResult ListaCidade(int id)
        {
            var cidades = from c in ctx.Cidades
                          where c.Estado.ID == id
                          select c;
            return Json(cidades);
        }

您的问题可能是您可能无法从api调用中获得预期的结果。

fail事件添加到getJSON调用中,它会告诉您哪里出了问题。

 $.getJSON("@Url.Action("ListaCidade")/" + uf, listaCidadeCallBack)
 .fail(function( jqxhr, textStatus, error ) {
      console.log(error);
      var err = textStatus + ", " + error;
      alert("Request Failed: " + err );
 });

EDIT根据注释,您的GET操作方法在发送JSON数据时遇到问题。

解决方案是,当您的操作方法是GET类型时,您需要传递JsonRequestBehavior.AllowGet作为Json方法的第二个参数。

public ActionResult ListaCidade()
{
   var cidades = from c in ctx.Cidades
                          where c.Estado.ID == id
                          select c;
    return Json(cidades , JsonRequestBehavior.AllowGet);   
}

对于HttpPost操作方法,您可以在不使用第二个参数的情况下使用旧代码。

最新更新