我使用ajax通过按钮单击来调用控制器。我希望它加载hello.html页面,但我希望spring不能加载ajax。
单击按钮后什么都没发生,但我确定控制器被击中。
这是我使用ajax通过单击按钮调用的控制器。
@RequestMapping(value="/submitName", method=RequestMethod.GET)
public String submitName(@RequestParam String name, Model model) {
System.out.println(name);
model.addAttribute("name", name);
return "hello";
}
这里是ajax调用。
$('#submit-button').on('click', function() {
$.ajax({
type: 'GET',
url: '/submitName',
data: {name: $('#name').val()}
});
});
在Chrome网络标签中,有趣的是它显示了我期望的页面。这是一个片段。
答案 0 :(得分:0)
我认为这里一切正常,除非您未提及要如何显示页面或显示在何处。您必须声明一个容器,从控制器返回的html会出现在该容器中,例如在div id
下或类似的东西。
因此,仅在您当前的html页面中,声明一个新标签,可能是<div id="current-page-id"></div>
现在,使用jquery将hello.html页面附加到当前页面:
$("#current-page-id").html(responseData);
因此,基本上,请执行以下操作:
$.ajax({
type: 'GET',
url: '/submitName',
data: {name: $('#name').val()},
dataType: 'html',
success: function (responseData) {
$('#current-page-id').html(responseData);
},
});
或者,简单地,将页面加载为单独的html页面,而不通过ajax。
按照注释部分的要求使用ajax,而不要使用ajax,方法如下:
function getHtmlPage(String name)
{
location.href = 'submitName/' + name;
}
现在点击按钮即可调用您的方法:
$('#submit-button').on('click', function() {
var name=$('#name').val();
getHtmlPage(name);
});
答案 1 :(得分:0)
AJAX调用只是将请求发送到服务器(控制器)并收到响应,
默认情况下,重新加载页面不承担任何责任。
这就是为什么当您单击按钮时,它会打到服务器端,但停留在同一页面上。
很简单,您可以通过两种方式加载新页面(hello.html)
1 |通过AJAX调用:
在按钮click方法上,您必须显式加载页面(Ajax Success块中的最佳实践)
添加此窗口加载方法:
window.location.href =“ http://localhost:8080/hello.html”;
Like:
$('#submit-button').on('click', function() {
$.ajax({
type: 'GET',
url: '/submitName',
data: {name: $('#name').val()}
window.location.href = "http://localhost:8080/hello.html";
});
});
2 |直接在按钮上进行Http调用
HTML
<a class="btn btn-primary btn-lg pull-right" href="http://localhost:8080/hello" role="button">Hello Page</a>
JSP:
<a class="btn btn-primary btn-lg pull-right" href="${pageContext.request.contextPath}/hello" role="button">Hello page</a>
胸腺
<a class="btn btn-xs" th:href="@{/hello})}">Hello Page </a>