【ajax】readyState=4并且status=200时,还进error方法

今天在使用jQuery.ajax方法去调用后台方法时,ajax中得参数data类型是"JSON",后台DEBUG调试,运行正常,返回正常的结果集,但是前端一直都进到ajax的error方法,百思不得其解,后要一探究竟,在error方法的参数中加了data后,发现data中的readyState = 4 并且 status=200,这两个状态也证明ajax访问没有问题,没有出现异常。回过头发现我在后台返回的是字符串,但并不是标准的json格式的字符串,所以前端js进入不了success。无法解析为json格式的数据,所以报错进error。通过后台将结果集转成json格式字符串即可。或者将data类型改为“text”

实例:

js:

$.ajax({
            url: "../../HelloWorld",
            type: "POST",
            data : {id:'12222'},
            dataType: 'text',  
            async:false,  
            success: function (data,textStatus) {
            console.log(textStatus);
            alert("success");
            },
            error : function(errorMsg) {
     
      console.log(errorMsg);
       }
        });

servlet:


类之前的注解:@WebServlet("/HelloWorld")

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
request.setCharacterEncoding("utf-8");//这里是转码  

String id=request.getParameter("id");
PrintWriter out = response.getWriter();
out.write("success21");  
    out.flush();  
    out.close(); 
}

web.xml:

<servlet>
        <servlet-name>HelloWorld</servlet-name>  类名
        <servlet-class>HelloWorld</servlet-class>    
    </servlet>


    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern> 
    </servlet-mapping>


s

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值