【问题标题】:getJson doesnt trigger controller ActionResult properlygetJson 没有正确触发控制器 ActionResult
【发布时间】:2019-02-28 14:04:59
【问题描述】:

在 Razor ASP 中,我试图在数据库对象注册后立即获取它的 ID。这是 Json。

function Registrar() {
    var obj = { alcohol: $("#alcoholId").val(), tabaco: $("#tabacoId").val(), otros: $("#otrosId").val()};
    //alert($("#codigo").val());
    $.getJSON("/AntecedentesMvc/Registrar", obj, function (e) {
        if (e != "") {
            alert(e);
        }
        else {
            alert("se realizó un registro con exito");
            GetHabitoId();
        }
    });
}
function GetHabitoId() {
    $.getJSON("/AntecedentesMvc/GetHabitos", function (o) {
        $("#Hid").val();
    });
}

Registrar() 工作正常,它注册对象。并且在成功时(否则)它应该调用另一个函数 GetHabitoID()。 它永远不会进入控制器。但是如果我像这样编辑函数 Registrar()

function Registrar() {
    var obj = { alcohol: $("#alcoholId").val(), tabaco: $("#tabacoId").val(), otros: $("#otrosId").val()};
    //alert($("#codigo").val());
    $.getJSON("/AntecedentesMvc/Registrar", obj, function (e) {
        if (e != "") {
            alert(e);
        }
        else {
            alert("se realizó un registro con exito");
        }
        GetHabitoId();
    });
}

function GetHabitoId() {
    $.getJSON("/AntecedentesMvc/GetHabitos", function (o) {
        $("#Hid").val();
    });
}

GetHabitoId() 确实调用了 ActionResult。问题是它在 Registrar() 之前调用它。返回空...

这里是控制器

Habitos objHabito=new Habitos();
[HttpPost]
public ActionResult Registrar(int alcohol, int tabaco, string otros)
{
    objHabito.Alcohol = alcohol;
    objHabito.Tabaco = tabaco;
    objHabito.Otros = otros;
    db.Habitos.Add(objHabito);
    db.SaveChanges();
    return View();  
}

[HttpGet]
public ActionResult GetHabitos ()
{
     var Habitoid = objHabito.Id_Habitos;
     return Json(Habitoid,JsonRequestBehavior.AllowGet);
}

如果你需要查看调用函数的按钮

<input type="button" name="RegistrarH" value="Registrar" class="btn btn-default"onclick="Registrar();" data-dismiss="modal"/>

我真的对这个问题感到困惑......

【问题讨论】:

  • 试试 public JsonResult GetHabitos()
  • 如果你想返回客户端 JS 响应的 POST 结果,为什么要使用return View();
  • 您为什么要使用$.getJSON 调用返回不是 JSON 的视图的POST 操作?
  • alert("se realizó un registro con exito"); 是否在 else 块中触发?
  • @MasoudKeshavarz 既然你提到了它。它不会触发。可能与问题有关?

标签: c# json asp.net-mvc model-view-controller


【解决方案1】:

这方面有一些不好的做法,但为了让它按预期工作,我做了以下操作。

function GetHabitoId() {
    $.getJSON("/AntecedentesMvc/GetHabitos", function (o) {
        $("#Hid").val(o);
    });
}

问题是 val() 没有得到参数!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 2020-08-15
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多