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的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!