我先把问题的关键说出来:一定要使用严格的JSON格式!!!
一定要使用严格的JSON格式!!
一定要使用严格的JSON格式!
贴出来我的前台代码:
$.ajax({
url : "${basePath}map/getAccident",
data : {},
type : "post",
dataType : 'json',
error: function() { alert("Jquery Ajax request error!!!"); },
success : function(data) {
if(data){
$("#accident_txt").html(
"事故名称:"+data.name+"
"+
"事故地点:"+data.address+"
"+
"发生时间:"+data.time+"
"+
"坐标经度:"+data.longitude+"
"+
"坐标纬度:"+data.latitude+"
"+
"事故描述:"+data.desc
);
}
}
});
public void getAccident(HttpServletRequest request, HttpServletResponse response){
String json = null;
if(Accident.isChanged()){
json = "{" +
"name: '" + Accident.name + "', "+
"address: '" + Accident.address + "', "+
"time: '" + Accident.time + "', "+
"longitude: '" + Accident.longitude + "', "+
"latitude: '" + Accident.latitude + "', "+
"desc: '" + Accident.desc + "'"+
"}";
}
Tools.returnResultAjax(response, json);
}
在上面的代码的基础上执行,前端每次都会进入到error函数中。
之前写ajax的时候,一直都是用的dataType="text",然后解析的时候用 eval() 。也就是执行完的返回结果是String类型的,然后用Jquery的 eval函数再解析字符串型的json。
这次决定使用dataType=“json”,但还是行不通。查了几篇文章:
http://bbs.csdn.net/topics/330144067
https://www.oschina.net/question/152421_21727
两篇提问下面的回答中,都提到了要使用严格的JSON格式才可以,其中关键的回答我贴出来:
你的JSON格式不正确,jquery 1.4以后对json格式变严格了,少了双引号
resp.getWriter().write("{total:100,info:\"ttttttttt\"}");
resp.getWriter().write("{\"total\":\"100\",\"info\":\"ttttttttt\"}");
也就是说必须要这种格式的
{"键":"值","键":"值"};
像原来的
{键:值,键:值}
{'键':'值','键':'值'}
这种都是错误的,不合标准,所以jquery返回error
JSON格式错误,必须严格按照格式来,属性页必须加双引号。
评论(0)| 引用此答案| 举报 (2014-04-29 15:43)
我的json属性名没有加双引号,属性值用的是单引号,结果怎么调试都是错的,把他们都加上双引号后就对了
评论(0)| 引用此答案| 举报 (2014-05-16 10:53)
按照上面说的,我把后台拼接json的代码改了:
@RequestMapping("/getAccident")
public void getAccident(HttpServletRequest request, HttpServletResponse response){
String json = null;
if(Accident.isChanged()){
json = "{" +
"\"name\": \"" + Accident.name + "\", "+
"\"address\":\"" + Accident.address + "\", "+
"\"time\":\"" + Accident.time + "\", "+
"\"longitude\":\"" + Accident.longitude + "\", "+
"\"latitude\":\"" + Accident.latitude + "\", "+
"\"desc\":\"" + Accident.desc + "\""+
"}";
}
Tools.returnResultAjax(response, json);
}
改完了就可以顺利执行了!
总结:
使用JQuery的ajax中,dataType返回数据使用json,后台传过来的一定是严格的JSON格式!
也就是说必须要这种格式的:
{ "键" : "值" , "键" : "值" } ;