AJAX返回数据类型是String类型解决办法
今天编写ajax时候出现了success:function(rs)返回的参数无法调用
前端代码示例:
//验证id是否存在
function checkID(){
var stuNo=$("input[name='stuNo']").val();
$.ajax({
url:"/Educational/student/check",
data:{"stuNo":stuNo},
type:"post",
dataType:"JSON",
success:function (rs){
if (rs.c==1){
alert("该学号已经存在,请重新填写");
$("input[name='stuNo']").val("");
}
},
error:function (){
alert("失败")
}
});
}
后端代码:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String stuNo=req.getParameter("stuNo");
StudentService service = new StudentServiceImpl();
//sql查询id,返回0/1表示存不存在
int i = service.checkStuNo(stuNo);
resp.setContentType("text/html;charset=utf-8");
String str = "{'c':"+i+"}";
PrintWriter writer = resp.getWriter();
JSONObject jsonObject = JSONObject.fromObject(str);
System.out.println(jsonObject);
writer.print(jsonObject);
}
出问题代码片段:
success:function (rs){
if (rs.c==1){}
检验问题 :
使用alert(rs)可以显示数据{“c”,1},但rs.c显示indefined,
使用alert(typeof(rs))显示为string
所以是返回数据类型出现问题,但已经定义 dataType:“JSON”,
解决办法:
success:function (rs){
var n = JSON.parse(rs)
if (n.c==1){}
添加一行代码转换数据类型为JSON格式
在另一个项目中完全不用这样的方式,返回的直接是JSON格式数据,所以存在疑惑,希望有大神解答。