关于Uncaught SyntaxError: Unexpected token P in JSON at position 1的原因及解决

产生原因

这几天在整合ajax和struts时遇到了一个棘手的问题,让我找了近半个多小时的时间,很是苦恼,就是下面这个错误:

关于Uncaught SyntaxError: Unexpected token P in JSON at position 1的原因及解决_第1张图片
在网上查阅了很多资料,大都有点含糊不清,看到是json字符串的转化原因才顿时反应过来.那为什么会出现这个问题呢?
错误原因:
在服务器端传递的是一个java类型的对象或集合,而在客户端用JSON.parse(data)方法去解析。这个方法是解析一个json类型的字符串成一个js对象类型,这样当然不行啦
解决办法:
在客户端把你要传递的数据对象或者集合转化成json字符串,至于转换的方法,在我博客里有一篇文章进行了详细解释,链接:。。。。。在这里简单提供两种方式(需要):
谷歌提供的GSON:

//把集合转化为json字符串
  Gson gson = new Gson();
  String json = gson.toJson(集合或对象名);

阿里巴巴提供的Fastjson:

String json = JSONObject.toJSONString(集合或对象名);

如果还有疑问的可以看代码:
在服务端我传了一个集合,但是并没有把集合进行处理转换成json字符串

List pros = ps.findAllProvince();   
out.print(pros); 

在客户端用ajax接收

$.ajax({
    type:"post",
    url:"/ajax_day1/p1/findProvince",
    success:function(data){
    //把json字符串转成js对象
     var pros = JSON.parse(data);
     for(var i=0;i

解决办法:

List pros = ps.findAllProvince();   
//添加转换代码
String json = JSONObject.toJSONString(pros);
out.print(json); 

好啦,问题就得到解决了…

你可能感兴趣的:(AJAX,ajax)