【问题标题】:Unable to show the $.ajax results in labels无法在标签中显示 $.ajax 结果
【发布时间】:2019-02-27 15:53:40
【问题描述】:

我使用 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>

【问题讨论】:

  • 如果您在浏览器本身中看到 JSON 响应,我会假设您在提交 form 时尝试发出此 AJAX 请求,但您忘记停止表单提交以便可以发出 AJAX 请求。在这种情况下,您需要在引发的submit 事件上调用preventDefault()。如果您需要有关如何执行此操作的更具体帮助,请显示更多代码 - 即运行此 AJAX 请求的事件处理程序
  • 如果您使用的是 ASP.NET MVC,请考虑让您的操作返回 PartialView 而不是 JSON,并简单地将 html 替换为结果(即 html)。这意味着您的空模板和搜索结果模板可以使用完全相同的部分。
  • @RoryMcCrossan 是的,我只是添加我的搜索按钮代码并编辑问题,你是对的,所以我必须使用 e.preventDefault() 然后提交表单或者只是添加 preventDefault() ?
  • 没错。虽然我已经为你添加了一个更好的方法供你使用的答案
  • 提交按钮提交表单,因此您不会取消它。

标签: jquery razorengine


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的回答,但我刚刚将 e.preventDefault() 添加到搜索按钮的点击事件中,但现在我无法访问控制器,按钮仍然是提交类型
  • 在这种情况下,您的 AJAX 请求可能存在问题。检查控制台是否有错误
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 2015-11-16
  • 1970-01-01
  • 2018-07-08
相关资源
最近更新 更多