ajax异步请求数据无法进入到success方法中这是为什么呢?
代码也很简单,输入一些数据,通过js发送一个json异步请求,要求返回一个数据。是不是返回数据的代码有问题呢,各位大神看看?
 @RequestMapping({"getAstSingleWheelImg_bbs"+Constant.JSON})
  @ResponseBody
  public Result getImgUrl(HttpServletRequest request, Model model, WheelChart chart)throws ParseException{
 String userName = request.getParameter("userName");
    System.out.println("userName:"+userName);
    String astroDate = request.getParameter("astroDate");
    String astroHour = request.getParameter("astroHour");
    String astroMin = request.getParameter("astroMin");
    //略过部分代码    result.setSuccess(true);
    result.setDesc(show_imgUrl);
    System.out.println(show_imgUrl);
    return result;
}
这个整个代码执行过程是没有问题的,结果是正确的,Result是一个返回的类.
js code: $.ajax({
type:"post",
contentType:"application/x-www-form-urlencoded",
cache:false,
url:request_url+"/getAstSingleWheelImg_bbs.jo",
data:a.serializeArray(),
dataType:"json",
timeout:200,
beforeSend: function () {
alert("正在处理请求,请稍后。。");
},
success:function(result){
$("img_wheel").attr("src",result.desc);
alert(a.desc);
},
error:function(){
alert("服务器忙,请重试!");
}
});
}});
执行结果是只跳转到beforeSend方法内,和error方法内,但是错误在哪呢,后台也没有出现异常呢,这里还需要设置什么吗?
求解!ajax异步json

解决方案 »

  1.   

    话说 返回一个类 可以吗?返回JSON吧
      

  2.   

    response要Json串才行吧,
    而且 js里要var json=eval(result);转下,才可以result.desc
      

  3.   

    error方法有三个参数,XMLHttpRequest, textStatus, errorThrown,alert下textStatus看看是什么错误
      

  4.   

    response要Json串才行吧,
    而且 js里要var json=eval(result);转下,才可以result.desc
      

  5.   

    没有把这个参数加上,所以一直会跳到error里,加上这个就好了,但是接收不到数据。
    async:false,
      

  6.   

    js不能接收java对象的,这个又不是用的dwr.. 手动封装json格式的对象还是可以滴
      

  7.   

    但这样其实是可以接受到这个Result对象的。
    看这个,这个是可以接收到的。程序是没有变的。
      

  8.   

       error: function(XMLHttpRequest, textStatus, errorThrown) {
                            alert(XMLHttpRequest.status);
                            alert(XMLHttpRequest.readyState);
                            alert(textStatus);
                        },
      

  9.   

    后台不能返回一个Result对象,需要得到输出流,out.print(你的json数据),然后前台xxx
      

  10.   

    ajax请求的返回值类型是json,你在servlet中进行json转换的
      

  11.   

    var a=$("#wheelImg");
    $.ajax({
    async:true,
    type:"post",
    contentType:"application/x-www-form-urlencoded",
    cache:false,
    url:request_url+"/getAstSingleWheelImg_bbs.jo",
    data:a.serializeArray(),
    dataType:"json",
    timeout:200,
    beforeSend:function () {
    alert("正在处理请求,请稍后。。");
    },
    success:function(result){
    $("img_wheel").attr("src",result.desc);
    alert("success");
    },
    error:function(XMLHttpRequest, textStatus, errorThrown){
    alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
    }
    });
    进入到beforeSend方法后,又进入error方法,弹出0,0,timeout三个值,这又是什么情况,加上async:true也不行,false也不行。还有为什么同步请求能接收到这个Result的JAVA类,而ajax请求就不行呢。
      

  12.   

    指定了json格式 ,jquery帮你封装的,,至于弹出0,0,timeout 是超时了,,把 timeout:200设置大点
      

  13.   

    一语点醒梦中人。把timeout设置大点就ok了,还是可以接收数据的。感谢。
      

  14.   

     timeout:200, 这么少啊 默认好像是0 没有超时。
      

  15.   


    异步请求返回Result对象是可以接收到的,这段代码也没有错,所以alert(textStatus)是timeout.
    所以,只需要把上述的timeout设置大一点就行了。默认设置是0.永远不超时。