首页 > 解决方案 > 无法在标签中显示 $.ajax 结果

问题描述

我使用 Razor 创建了一个 MVC ASP.Net 视图,如果我重新加载视图(将搜索参数发送到特定控制器,然后重新加载视图以显示应有的结果),该视图的搜索工作就很好。

但是现在我需要使用 jQuery 将搜索参数发送到控制器并在我的视图的特定标签中接收/显示结果。我在搜索点击事件中对此进行了编码

$.ajax({
  type: "POST",
  url: '@Url.Action(actionName: "PrecalificacionLibreGestion", controllerName: "Home")',
  datatype: "json",
  contentType: "application/json",
  data: JSON.stringify({
    NUMERO: numero,
    NIT: nit
  }),
  beforeSend: function() {
    $("#loader").show();
  },
  success: function(data) {
    $("#loader").hide();
    if (data.respuesta == "OK") {
      $("#lblPrecalificacion").empty();
      $("#lblAccion").empty();
      $("#lblPrograma").empty();
      $("#lblPrecalificacion").val("CODIGO PROGRAMA: " + data.codigo_programa);
      $("#lblAccion").val("ACCIÓN FORMATIVA: " + data.accion_formativa);
      $("#lblPrograma").val("PROGRAMA: " + data.precalificacion);
    }

    if (data.respuesta == "OKNO") {
      alert("no se encontró");
    }
  }
});

它将两个参数发送到控制器,控制器根据搜索参数返回正确的信息,但我无法在label元素中显示信息。

我得到的是一个空网页,其结果为 JSON 格式,如下所示:

在此处输入图像描述

你能告诉我我做错了什么吗?

这是搜索按钮

<button class="btn btn-default" type="submit" id="btn-buscar"><span class="glyphicon glyphicon-search"></span></button>

标签: jqueryrazorengine

解决方案


当您在单击提交按钮下运行代码时,问题是表单提交在您的 AJAX 逻辑运行之前导致页面重定向。要解决此问题,您需要调用preventDefault()引发的事件。

然而,一个更好的主意是挂钩submitform元素的事件而不是单击按钮。尝试这个:

$('#yourForm').on('submit', function(e) {
  e.preventDefault();

  $.ajax({
    // your AJAX logic here...
  });
});

推荐阅读