用eval 转json格式字符串为js对象的问题 ... ... 在线等~~~ ~~~
js页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>jsonTest</title>
<script type="text/javascript" src="<%=request.getContextPath()+"/js_file/prototype.js" %>"></script>
<script type="text/javascript" src="<%=request.getContextPath()+"/js_file/json.js" %>"></script>
<script type="text/javascript" src="<%=request.getContextPath()+"/js_file/ajax.js" %>"></script>
<script language="JavaScript" type="text/javascript">
function sendRequest()
{
var url = 'testJSON.action';
var myAjax = new Ajax.Request(
url,
{
//请求方式:POST
method:'post',
//请求参数
parameters:null,
//指定回调函数
onComplete: processResponse,
//是否异步发送请求
asynchronous:true
});
function processResponse(request)
{
if(request.readyState == 4){
if(request.status == 200){
var info = request.responseText;
alert(info);
// var info2 = info.evalJSON;//将返回的JSON字符串转成JavaScript对象
var info2 = eval('('+info+')');
alert(info2);
$("div1").innerHTML = info2.param1;
$("div2").innerHTML = info2.param2;
$("div3").innerHTML = info2.param3;
}
else if(request.status == 404){
alert("404 未找到!");
}
else {
alert("出错了!");
}
}
}
}
</script>
</head>
<body>
<div style="font-size:16px; text-align: center;">
<a href="javascript:sendRequest();">测试JSON</a><br>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
</div>
</body>
</html>
后台处理:
package com.test.action;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import net.sf.json.JSONObject;
public class JSONAction extends ActionSupport {
@Override
public String execute() throws Exception {
String rt = "";
HttpServletResponse response = ServletActionContext.getResponse();
JSONObject resultJSON = new JSONObject();
resultJSON.put("param1", 1);
resultJSON.put("param2", 2);
resultJSON.put("param3", 3);
try{
response.getWriter().print(resultJSON);
}catch (Exception e){
e.printStackTrace();
}
System.out.println(resultJSON.toString());
rt = "test";
return rt;
}
}
可以返回json格式的数据 resultJSON.toString() 在后台可以打印出 {"param1":1,"param2":2,"param3":3}
alert(info);弹出的内容为 {"param1":1,"param2":2,"param3":3}{}
但在后面的处理就不行了,用var info2 = info.evalJSON; 取出的三个value都是undefined