Servlet 与 Ajax 交互一直报status=parsererror的解决办法
原因:servlet返回的数据不是Json格式
1、JS代码为:
varjsonStr={'clusterNum':2,'iterationNum':3,'runTimes':4}; $.ajax({ type:"post", //http://172.22.12.135:9000/Json.json url:"/LSHome/LSHome", dataType:'json', data:jsonStr, success:function(data,textStatus){ if(textStatus=="success"){ alert("创建任务操作成功"+data); } }, error:function(xhr,status,errMsg){ alert("创建任务操作失败!"); } });
2、注意上面的url为/LSHome/LSHome,(项目名称为LSHome)所以在web.xml文件中,配置Servlet如下:
LSHomeServlet com.ys.servlet.LSHomeServlet LSHomeServlet /LSHome
3、Servlet中代码为:
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ //聚类数量 StringclusterNum=request.getParameter("clusterNum"); //迭代次数 StringiterationNum=request.getParameter("iterationNum"); //运行次数 StringrunTimes=request.getParameter("runTimes"); System.out.println("聚类数量为:"+clusterNum+"---迭代次数:"+iterationNum+"---运行次数:"+runTimes); PrintWriterout=response.getWriter(); out.write("success"); out.close(); }
4、结果是一直都是进入到ajax方法里面的error,而且status=parsererror
xhr=Object{readyState:4,responseText:"success",status:200,statusText:"OK"}
5、解决办法:
原因是通过response对象返回的数据格式不正确,正确方法
PrintWriterout=response.getWriter(); StringjsonStr="{\"success\":\"OK\"}"; out.write(jsonStr);
可以将返回值拼凑成JSON数据格式,然后会不会报status=parsererror
以上所述是小编给大家介绍的Servlet与Ajax交互一直报status=parsererror的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!