我用jQuery实现了我的第一个ajax调用。
我输入了这样的代码:
$('#hostelSearchFormButton').click(
function(e) {
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
url : '${hostelSearchAjaxUrl}',
context: document.body,
dataType: "json",
data : $form.serialize(),
type : "POST",
cache: false,
async: true,
success : function(response) {
if (response.status == 'FAIL') {
for ( var val in errMessages) {
var $errorLabel = $.find('#' + val
+ 'ErrorLabel');
$errorLabel.html(errMessages[val]);
}
}
},
error : function(data) {
console.log("data on fail " + data);
}
});
e.preventDefault();
return false;
});
它成功发布到我的@Controller方法,但作为一种共鸣,我将HostelAjaxResponse作为json字符串在浏览器中返回。我只在浏览器中看到字符串!
我处理ajax帖子的方法。它运行正常,但返回字符串:
@RequestMapping(value = "/search", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
public @ResponseBody HostelAjaxResponse doSearch(@Valid @RequestBody HostelSearch hostelSearch,
BindingResult bindingResult, Model model, HttpServletRequest request) {
现在,当ajax调用正在运行时,我什么也得不到。在chrome的javascript控制台中,我看到错误错误请求:
POST http://localhost:8080/HostMe/hostel/search 400 (Bad Request)
答案 0 :(得分:0)
我猜您正在将表单提交给控制器,因此当响应返回时您不在同一页面上。您可以通过将"console.log"
放入完成的回调中来检查。
我的建议是,因为您已经将序列化表单数据作为数据发送到ajax请求中。只需更改
$form.submit(function(e){});
到
$("#submitbutton").click();
并检查ajax请求的成功处理程序中的返回响应。 我希望这能解决你的问题。欢呼。