json servlet交互问题

dingwood 2009-06-26 09:13:24
我在服务器端这样写的:
 List<Cartype> typeList = carTypeDao.getAllType();
JSONObject carType = new JSONObject();
JSONArray array = new JSONArray();
Iterator<Cartype> itee=typeList.iterator();
while(itee.hasNext()){
int i=0;
Cartype type = itee.next();
Map<String,String> myMap = new HashMap<String,String>();
myMap.put("typeId",type.getTypeID()+"");
myMap.put("typeName",type.getCartype());
array.put(myMap);
}
try {
carType.put("alltypes", array);
PrintWriter writer = response.getWriter();
writer.print(carType.toString());
System.out.println(carType.toString());
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

如何在客户端得到JSON对象,并循环输出里面的内容?
...全文
136 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinghun8leech 2009-06-28
  • 打赏
  • 举报
回复
alert(eval(types.alltypes[i].typeId)); 打出应该是个object才对。
js端获取到的json字符串需要用eval函数进行对象化。
dingwood 2009-06-27
  • 打赏
  • 举报
回复
现在还是有错,我 alert(types.alltypes.length)得到的是0;可能哪的错呢?
Defonds 2009-06-27
  • 打赏
  • 举报
回复
JSON
mark!
dingwood 2009-06-26
  • 打赏
  • 举报
回复
function carTypeHandler(){
if(carTypeXMLHttp.readyState==4){
alert(carTypeXMLHttp.readyState);
if(carTypeXMLHttp.status==200){
var type = carTypeXMLHttp.responseText;
var obj = eval('(' + type + ')');
var types = obj.toJSONString();
alert(types);//这步已经得到对象了,就是下面代码不对。
for(var i=0;i <types.alltypes.myMap.length;i++){
alert(types.alltypes[i].typeId);
}
var op = document.createElement("option");
}
}
}
dingwood 2009-06-26
  • 打赏
  • 举报
回复
没说明白。我用的AJAX,客户端已经得到了这个对象,主要是循环输出问题。
function carTypeHandler(){
if(carTypeXMLHttp.readyState==4){
alert(carTypeXMLHttp.readyState);
if(carTypeXMLHttp.status==200){
var type = carTypeXMLHttp.responseText;
var obj = eval('(' + type + ')');
var types = obj.toJSONString();
alert(types);
for(var i=0;i<types.alltypes.myMap.length;i++){
alert(types.alltypes[i].typeId);
}
var op = document.createElement("option");
}
}
}
laorer 2009-06-26
  • 打赏
  • 举报
回复
客户端就直接得到
var jsonExpression = "(" + req.responseText + ")";
var obj = eval(jsonExpression);
req 是一个 httpRequest

这个里面就包含了 所要表达的对象,你可以把 obj alert 出来
APOLLO_TS 2009-06-26
  • 打赏
  • 举报
回复
。。。
caomeiliang 2009-06-26
  • 打赏
  • 举报
回复
直接调用你这个servlet的url就可以了
sangshusen_1988 2009-06-26
  • 打赏
  • 举报
回复
var type = carTypeXMLHttp.responseText;
var types = eval(type);
alert(types
for(var i=0;i <types.alltypes.length;i++){
alert(types.alltypes[i].typeId);
}
dingwood 2009-06-26
  • 打赏
  • 举报
回复
还是不行,就找不到
说alltypes.myMap为空或不是对象。JS的错。
zoutuo 2009-06-26
  • 打赏
  • 举报
回复
alert(eval(types.alltypes[i].typeId)); 试试
caomeiliang 2009-06-26
  • 打赏
  • 举报
回复
writer.print(carType.toString());


我没写过json,想问下为什么要toString

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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