Struts2返回JSON后访问内部数据出错!

漏网之余 2012-05-25 08:43:27
Action:
package com.trafic.action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.trafic.bean.Accident;
import com.trafic.service.AccidentService;

public class GetAccidentPointsAction extends ActionSupport {

private static final long serialVersionUID = 3511462933996799995L;

private AccidentService as;
private String validate;

public void setAs(AccidentService as) {
System.out.println("setAs...");
this.as = as;
}

public String getValidate() {
return validate;
}

public void setValidate(String validate) {
this.validate = validate;
}

@Override
public String execute() throws Exception {
List<Accident> all = as.getAllAccident();
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.append("{\"points\":[{");
for (int i = 0; i < all.size(); i++) {
if (i != all.size() - 1) {
jsonBuilder.append("\"x\":" + all.get(i).getAcc_x() + ",\"y\":"
+ all.get(i).getAcc_y() + "},{");
} else {
jsonBuilder.append("\"x\":" + all.get(i).getAcc_x() + ",\"y\":"
+ all.get(i).getAcc_y() + "}]}");
}
}
this.validate = jsonBuilder.toString();
System.out.println(validate);
return SUCCESS;
}

}


我需要取得的是validate这个字符串组成的JSON:
期中validate字符串为:{"points":[{"x":123.0,"y":321.0}]}

在JSP中通过AJAX取得了该JSON;
问题就出现了:

$.post("getAllAccident",function(validate){
alert(validate);//显示[Objext Object]
alert(validate.points[0].x); 这句话就不会弹出内容!为什么呢?
})

我做了这个测试:

var w = {"points":[{"x":123.0,"y":321.0}]};
alert(w); //弹出[Object Object]
alert(w.points[0].x); //弹出123

但是上面的访问也是按这个来的。怎么就会出错?
还是我JSON返回的就有问题?困惑了半天了,求大侠解答!谢谢
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
漏网之余 2012-05-25
  • 打赏
  • 举报
回复
谢谢四楼,正解,看了内容后知道没有成功变成JSON;
给分!
MiceRice 2012-05-25
  • 打赏
  • 举报
回复
是个字符串,没有变成JSON对象;自己转换一次吧。

$.post("getAllAccident",function(validate){
validate = eval(validate.validate);
alert(validate.points[0].x);
})
漏网之余 2012-05-25
  • 打赏
  • 举报
回复
是不是我JSON的格式有问题?
漏网之余 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
给你个小函数,你嵌入页面,然后调用:
showObj(validate);
看看显示啥。


JScript code

function showObj(obj) {
var str = obj + " IS \n";
for (n in obj) {
if (typeof (obj[n]) == "function") {
……
[/Quote]
[object Object] IS
validate={"points":[{"x":123.0,"y":321.0}]}
返回结果!
MiceRice 2012-05-25
  • 打赏
  • 举报
回复
给你个小函数,你嵌入页面,然后调用:
showObj(validate);
看看显示啥。


function showObj(obj) {
var str = obj + " IS \n";
for (n in obj) {
if (typeof (obj[n]) == "function") {
str += n + "()\t";
} else {
str += n + "=" + obj[n] + "\t";
}
}

alert(str);
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧