最近使用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;
}
4 个解决方案
#1
配置type=json
#2
我也试过配置了一下,但是连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>
#3
你误解了,人家意思是前台ajax的dataType是json,页面没问题,你的action方法可以输出转json后的结果吗
#4
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 );
},
//data = eval(data);
var infoArray = eval("("+data+")"); //包数据解析为json格式
alert(infoArray);
},
改为:
success:function(data){
var obj = $.parseJSON(data); //使用这个方法解析json
var infoArray = obj.result;
alert(infoArray );
},
#1
配置type=json
#2
我也试过配置了一下,但是连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>
#3
你误解了,人家意思是前台ajax的dataType是json,页面没问题,你的action方法可以输出转json后的结果吗
#4
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 );
},
//data = eval(data);
var infoArray = eval("("+data+")"); //包数据解析为json格式
alert(infoArray);
},
改为:
success:function(data){
var obj = $.parseJSON(data); //使用这个方法解析json
var infoArray = obj.result;
alert(infoArray );
},