我已经使用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>
答案 0 :(得分:1)
在单击“提交”按钮的情况下运行代码时,问题是表单提交导致页面重定向在AJAX逻辑运行之前。要解决此问题,您需要在引发的事件上致电preventDefault()
。
不过还是一个更好的主意,那就是挂钩到父submit
元素的form
事件,而不是单击按钮。试试这个:
$('#yourForm').on('submit', function(e) {
e.preventDefault();
$.ajax({
// your AJAX logic here...
});
});