Jquery 无法在标签中显示$.ajax结果

Jquery 无法在标签中显示$.ajax结果,jquery,razorengine,Jquery,Razorengine,我已经使用Razor创建了一个MVC ASP.Net视图,如果我重新加载该视图(将搜索参数发送到特定的 控制器,然后重新加载视图以显示到期结果) 但是现在我需要使用jQuery将搜索参数发送到控制器,并在视图的特定标签中接收/显示结果。我已在搜索单击事件中对此进行了编码 $.ajax({ 类型:“POST”, url:'@url.Action(actionName:“precalifaccionlibregestion”,controllerName:“Home”), 数据类型:“json”,

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

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

$.ajax({
类型:“POST”,
url:'@url.Action(actionName:“precalifaccionlibregestion”,controllerName:“Home”),
数据类型:“json”,
contentType:“应用程序/json”,
数据:JSON.stringify({
数字:数字,
尼特:尼特
}),
beforeSend:function(){
$(“#加载程序”).show();
},
成功:功能(数据){
$(“#加载程序”).hide();
如果(data.respuesta==“正常”){
$(“#lblprecalicacion”).empty();
$(“#lblAccion”).empty();
$(“#lblPrograma”).empty();
$(“#lblPrecalificacion”).val(“CODIGO计划:”+data.CODIGO计划);
$(“lblAccion”).val(“ACCIÓN FORMATIVA:“+data.accion_FORMATIVA”);
$(“lblPrograma”).val(“PROGRAMA:+data.precalifacion”);
}
如果(data.respuesta==“OKNO”){
警报(“无安全警报”);
}
}
});
它将两个参数发送给控制器,控制器也会根据搜索参数返回正确的信息,但我无法在
标签
元素中显示信息

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

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

这是搜索按钮

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

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

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

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

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

如果您在浏览器本身中看到JSON响应,我会假设您试图在提交
表单时发出此AJAX请求,但是您忘记了停止表单提交,以便发出AJAX请求。在这种情况下,需要在引发的
submit
事件上调用
preventDefault()。如果你想得到更具体的帮助,那么请显示更多的代码——即事件处理程序,如果你使用ASP.NET MVC,那么这个Ajax请求将被运行,然后考虑你的动作返回一个<代码>部分视图而不是JSON,并简单地用结果(HTML)替换HTML。这意味着您的空模板和搜索结果模板可以使用完全相同的部分内容。@RoryMcCrossan是的,我只需添加搜索按钮代码并编辑问题,您是对的,因此我必须使用e.preventDefault()然后提交表单或只需添加preventDefault()?没错。虽然我为您添加了一个答案,其中有一个更好的方法供您使用提交按钮提交表单,这样您就不会取消它。感谢您的答案,但我只是在搜索按钮的“单击事件”中添加了e.preventDefault(),但现在我无法访问控制器,按钮仍然是submit类型,在这种情况下,您的AJAX请求可能会出现问题。检查控制台是否有错误