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