解决方案 »

  1.   

    返回success后跳转页面配置是否正常?自己开一下配置。可以deubg 一下。
      

  2.   

    配置文件写错了吧,应该是result那里的文件名写错了
      

  3.   

    我的result这么写的哦
    <result name="findKnowledgeResource" type="json">
    <param name="includeProperties">
    knowledgeRes.*,sectionId,success
    </param> 
    </result>
      

  4.   


    因为success=false,出来后也没有进入ajax的success逻辑里面
      

  5.   

    [问题补充]
    一直进入erroe ,我alert几个参数如下:
    alert(XMLHttpRequest.status);
    alert(XMLHttpRequest.readyState);  
    alert(textStatus);  分别是 404 4 error为啥?Action都执行完了
      

  6.   

    如果你用的是ajax,Action中就不能reutrn success了,应该是return null;然后用out.print来传到页面相应的数据啊,所以跟本不可能出现404错误。另外要注意的是,如果用struts2 + ajax,那么当struts2内部的传入的参数解析时出现了问题,那么就会出现异常,而且根本就不会执行Action中的代码,这时后台异常打印的结果就是no result。也就是没有这个Action的result结果,这时候很容易被人误以为自己的后台的action配置错了实际上是struts2自身解析参数出现了问题,比如,你input中是写的数字,而action中对应的参数是日期。。
      

  7.   

    非常感谢你的回答,我是用struts2 + ajax做的,Action返回一个字符串也就是result名,struts.xml配置如下
    <result name="findKnowledgeResource" type="json">
    <param name="includeProperties">
    knowledgeRes.*,sectionId,success
    </param> 
    </result>
    URL单独执行也是能进入Action获取数据的,但是执行完?Action后还是报404。我断点查过,在getXXX方法中都还是有值的,我不知道是返回过程中哪一个缓解导致的404了~
      

  8.   

    非常感谢你的回答,我是用struts2 + ajax做的,Action返回一个字符串也就是result名,struts.xml配置如下
    <result name="findKnowledgeResource" type="json">
    <param name="includeProperties">
    knowledgeRes.*,sectionId,success
    </param> 
    </result>
    URL单独执行也是能进入Action获取数据的,但是执行完?Action后还是报404。我断点查过,在getXXX方法中都还是有值的,我不知道是返回过程中哪一个缓解导致的404了~这样当然是可以的,用json,完全可以这么写,404错误有一个很直接的问题,就是路径错误。param中的参数确实返回到页面了,你再看一下页面中的接收参数的名字有没有写正确。
      

  9.   

    非常感谢你的回答,我是用struts2 + ajax做的,Action返回一个字符串也就是result名,struts.xml配置如下
    <result name="findKnowledgeResource" type="json">
    <param name="includeProperties">
    knowledgeRes.*,sectionId,success
    </param> 
    </result>
    URL单独执行也是能进入Action获取数据的,但是执行完?Action后还是报404。我断点查过,在getXXX方法中都还是有值的,我不知道是返回过程中哪一个缓解导致的404了~这样当然是可以的,用json,完全可以这么写,404错误有一个很直接的问题,就是路径错误。param中的参数确实返回到页面了,你再看一下页面中的接收参数的名字有没有写正确。
    ajax返回就进入error了,没有进入success,跟参数名字没关系吧,你看:$.ajax({
       type: "POST",
       timeout: 10000,
       dataType:"json",
       async: true, 
       url: basePath + "XXX.action?treeNodeIdList="+treeNodeIdList+"&bookId="+bookId,
       error: function(XMLHttpRequest,textStatus,errorThrown) {
       alert(XMLHttpRequest.status);
       alert(XMLHttpRequest.readyState);  
                       alert(textStatus);  
               $("#showLoading").show();
           },
       success: function(msg){
    alert(msg);

       }
    });
      

  10.   

    进入error了,那说明还是后台的问题吧?这个ERROR应该是struts2内置的
      

  11.   

    会不会是数据结构问题呢。
    <result type="json">
                   
                    <param name="root">result</param>
    </result>
        private String result;
      @Override
        public String execute() throws Exception {      
            result= "{\"id\":1, \"username\":\"zhangsan\", \"pwd\":\"123\"}";
            return SUCCESS;
        }
      

  12.   


    数据结构是这样的,没错才是啊~这是不带参数去运行url的输出,带了参数就报404,而后台的Action方法是执行完毕的,也就是说knowledgeRes不为null,sectionId不为null,success=true
    {"knowledgeRes":null,"sectionId":null,"success":false}
      

  13.   

    改成下面的呢?$.ajax({
    url: basePath + "XXX.action",
    data:{treeNodeIdList:treeNodeIdList ,bookId:bookId},
      

  14.   

    不要给result结果值了,直接return null,本来就是异步加载,还返回result干吗,用printWriter 将页面需要的字符串结果输出给页面就OK了
      

  15.   

    貌似解决了,虽然还是摸不着头脑,但是折腾了一天了,是一个同事写了个hashCode()引起的...
    具体的介绍这里有讲http://www.iteye.com/topic/257191
      

  16.   

    貌似解决了,虽然还是摸不着头脑,但是折腾了一天了,是一个同事写了个hashCode()引起的...
    具体的介绍这里有讲http://www.iteye.com/topic/257191不会吧,hashCode 会引起找不到对应的404
      

  17.   

    我也是一样的问题 !AJAX请求到action,action流程走完了,最后JS爆404,
    我的解决方法是action return null;我的配置方式
    <result type="stream">
    <param name="msg">msg</param>
    </result>