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

    xiaoxiao2021-04-13  39

    今天在使用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

    转载请注明原文地址: https://ju.6miu.com/read-668347.html

    最新回复(0)