日期:2014-05-17  浏览次数:20778 次

ajax请求返回json数据的问题
这个是界面。

<script type="text/javascript">
$(function(){
$("#country").change(function(){
var country = $(this).val();
$.ajax({
url:"/demo",
type:"POST",
dataType:'json',
data:{"country":country},
success:function(data){
alert("data长度: "+$(data).size());
                    //alert(data);
//$("#city").append("<option>"+"沈阳"+"</option>");
},
error:function(){
alert("数据传输失败!");
}
});
});
});
</script>

这个是后台程序。

String country = request.getParameter("country");
response.setContentType("text;charset=UTF-8");
PrintWriter out = response.getWriter();
JSONObject data = new JSONObject();
data.put("0", "沈阳");
data.put("1", "天津");
data.put("2", "深圳");
data.put("3", "大连");
// String data2 = data.toString();
// JSONObject data = JSONObject.fromObject(data2);
out.print(data);
System.out.println(data.get("0")+" 长度111: "+data.size());
System.out.println("000 "+data);
out.flush();
out.close();


现在界面alert(data);返回的是[object Object],长度为1.
但是程序的后台返回的数据都正确,长度也为4.
求帮助界面怎么能返回和后台相同的数据.不知道哪里错了.
java javaweb ajax

------解决方案--------------------
eval("(" + data + ")");这个方法要根据你的字符串是什么格式的,如果你字符串已经是这种格式:[{id:1,name:mx},{id:1,name:mx},{id:1,name:mx}]  这么写就可以eval( data )。