日期:2014-05-16  浏览次数:20618 次

用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