springmvc +jquery ajax,后台没问题,能正常进去并执行完成,返回到页面之后,
一直进error,不进success
js打印出来的东西:
XMLHttpRequest.status:404
XMLHttpRequest.readyState:4
textStatus:error
真心不知道是什么问题,跟了一段时间,发现mvc:annotation-driven/是这个配置
引起了,去掉了就没问题,加上了就有问题了,这下更晕了
哪位大神来指点一二
是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
后面,我们处理响应ajax请求时,就使用到了对json的支持。
后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,来完成测试,取的时候要知道是这一句注册的这两个bean。
context:annotation-config declares support for general annotations such as @Required, @Autowired, @PostConstruct, and so on.
is actually rather pointless. It declares explicit support for annotation-driven MVC controllers (i.e.@RequestMapping, @Controller, etc), even though support for those is the default behaviour.
My advice is to always declare context:annotation-config, but don't bother with unless you want JSON support via Jackson.
当我们需要controller返回一个map的json对象时,可以设定,
同时设定mvc:message-converters 标签,设定字符集和json处理类
估计是你的返回值有问题吧,,看下返回的代码
AJAX 代码 贴一下
后台代码:
/**
* 加载更多跟帖
* @author Think-PC
*
*/
@RequestMapping(value = "/getMorePost", method = {GET, POST })
public @ResponseBody Map getMorePost(HttpServletRequest request,Map map,
@RequestParam(value = "shownum", defaultValue = "0") int shownum,
@RequestParam(value = "topicid", defaultValue = "0") int topicid) {
try {
//查询跟帖
shownum = (shownum+1);
map.put("shownum", shownum);
ArrayList postList = topicService.getPostByTopicId(topicid, shownum*10, 10);
if(postList!=null && postList.size()>0){
StringBuffer sbf = new StringBuffer();
for(int i=0;i Post post = postList.get(i);
sbf.append("
"+(shownum*10+(i+1))+"
");");
sbf.append(" 跟帖人:"+post.getUser().getUsername()+" | ");
sbf.append(" 跟帖时间:");
sbf.append("
"+post.getPostcontent()+"
");ajax代码:
//加载更多跟帖
function getMorePost(topicid){
var shownum = $("#shownum").val();
var data = {
topicid:topicid,
shownum:shownum
}
$.ajax({
url:'<%=path %>/topic/getMorePost.html',
data:data,
type:'post',
cache:false,
dataType:'json',
success:function(data){
if(data.success == "0"){
alert("没有更多跟帖");
}else{
$(".recommended-info").append(data.success);
$("#shownum").val(data.shownum);
}
},
error:function(XMLHttpRequest,textStatus){
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
}
});
}
http://blog.csdn.net/je_ge/article/details/53725357
<!-- 可以访问静态资源 -->
<mvc:default-servlet-handler />
<!-- 解析@RequestMapping -->
<mvc:annotation-driven />
<!-- 组件扫描 -->
<context:component-scan base-package="com.jege.spring.mvc" />
mvc:annotation-driven/ 这个配置的意思是启动d spring 的注解。 如果不配置这个的话,你的 @ResponseBody ,@RequestMapping
等注解不生效的话,后台没有处理成json 返回,前台以为你返回的是页面,当然是找不到页面的