最近使用Jquery做ajax请求,需要从后来获得json类型数据,可是如何都获取不了是不是还需要配置struts.xml文件啊?真的觉得怎么搞不懂....希望大牛们给予帮助。这是我的前台JS代码
function smallPicClick(){
  $("div#showList ul li img").bind("click",function(){
  var pic_id = $(this).attr("id");
  $.ajax({
  type:"post",
  url:"checkPicInfoYardAction?picId="+pic_id,
  dataType:"json",
  success:function(data){
  //data = eval(data);
  var infoArray = eval("("+data+")"); //包数据解析为json格式
  alert(infoArray);
  },
  error:function(){
 
  }
  });
  });
 }这是action的代码
/**
 * 获取单个图片的详细信息
 * @return
 */
public String checkPicInfo(){
System.out.println("进入Action");
int picID = Integer.parseInt(request.getParameter("picId"));
Picture picture = pictureService.getPicById(picID);
Map<String, Object> picMap = new HashMap<String, Object>();
picMap.put("name", picture.getPicName());
picMap.put("author", picture.getAuthor());
picMap.put("description", picture.getDescription());
picMap.put("favour", picture.getFavour());
picMap.put("clickNum", picture.getClickNum());
JSONArray jsonObject = JSONArray.fromObject(picMap); 
System.out.println(jsonObject.toString());
try {
response = ServletActionContext.getResponse();
response.setContentType("application/json;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print(jsonObject.toString());
out.flush();
} catch (Exception e) {
e.printStackTrace();
return "fail";
}
return null;
}
JSONStrutsjavajquery

解决方案 »

  1.   


    我也试过配置了一下,但是连action都不能访问到了,你看看我配置的struts.xml
    <package name="json" extends="json-default">
            <action name="jsonYardAction" method="checkPicInfo" class="com.simpleton.myuniversity.action.YardAction">        
                <result type="json">
                    <param name="root">result</param>
                </result>
            </action>
        </package>
      

  2.   

    你误解了,人家意思是前台ajax的dataType是json,页面没问题,你的action方法可以输出转json后的结果吗
      

  3.   

     success:function(data){
                     //data = eval(data);
                     var infoArray = eval("("+data+")"); //包数据解析为json格式
                     alert(infoArray);
                 },改为:
     success:function(data){
    var obj = $.parseJSON(data);  //使用这个方法解析json
                    var infoArray = obj.result;
        alert(infoArray );
                 },