Spring控制器在ajax调用上返回文本?

时间:2014-07-22 20:58:29

标签: java jquery ajax spring-mvc

我用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) 

1 个答案:

答案 0 :(得分:0)

我猜您正在将表单提交给控制器,因此当响应返回时您不在同一页面上。您可以通过将"console.log"放入完成的回调中来检查。

我的建议是,因为您已经将序列化表单数据作为数据发送到ajax请求中。只需更改

$form.submit(function(e){});

$("#submitbutton").click();

并检查ajax请求的成功处理程序中的返回响应。 我希望这能解决你的问题。欢呼。