【发布时间】: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