如何将控制器中的列表作为jquery ajax响应发送到jsp

时间:2014-09-25 14:35:59

标签: jquery ajax jsp spring-mvc

jsp中的$ .post如下:

$(document).ready(function(){
      $("#searchtext").keyup(function(){
            $.post("search",
                    {
                      parameter:$("#searchtext").val()
                    },
                    function(response){
                       document.getElementsByTagName("html")[0].innerHTML=response;

                    });
      });
    }); 

控制器如下:

@RequestMapping("/search")
    public @ResponseBody ModelAndView searchByUser(@RequestParam(value="parameter" , required=false) String bookAttributesLike){
        ModelAndView modelAndView = new ModelAndView("/homepage");
        if(bookAttributesLike == null)
        {
        }
        else
        {
            try {
                    searchResults = bookManagerService.getBookList(bookAttributesLike);
                    modelAndView.addObject("message",searchResults);
            } catch (NoResultFoundException e) {
                modelAndView = new ModelAndView("/homepage");
                logger.info("No Book Found");
            }
            catch (ServiceException e) {
                modelAndView = new ModelAndView("/error");
                logger.error("Problem in fetching records");
            }
        }
        return modelAndView;
}
}

现在,当我输入一个单词时,我会得到列表,但页面会刷新并且第一个字母不见了。那么可以做些什么来获取列表并获取文本框中的内容呢?

1 个答案:

答案 0 :(得分:0)

将结果放在div中而不是重写整个页面。

变化:

document.getElementsByTagName("html")[0].innerHTML=response;

类似于:

document.getElementById("myDiv").innerHTML = response;

当然,您现在需要在页面中定义div:

<div id='myDiv'></div>