js如何接收action传递过来的Json数组

action 代码:List<LKLocation> list =lkl.queryor();
JSONArray jsonArray = JSONArray.fromObject(list);
req.setAttribute("jsonArray",jsonArray);
这是某个action中的代码,在通过返回字符串由struts2传递到页面
jsp 代码:

<script type="text/javascript">
function show(){

var jsonarray = document.getElementById("json").value;
alert(jsonarray.size());
var jsonStr = 'jsonArray';
alert(jsonarray.size());

// var objs = eval(data);
for(var i = 0; i < jsonarray.length; i++) {
alert(jsonarray[i].Address);
alert(jsonarray[i].State);
}
}

</script>

</head>

<body onload="show()">
<!--<div style="left:0;top:0;width:100%;height:100%;border:0px;solid#000" id="container"></div>-->
<%Object jsonstr =session.getAttribute("jsonArray");%>
<input type="hidden" id="json" value=<%=jsonstr %>>
</body>
不知道为什么JSP页面都是空白?

第1个回答  2015-07-14

    post的话是没有办法直接获取得

    如果是同一个页面,考虑直接用js函数获取,不提交

    如果是不同页面,只能通过ajax变成get方式

    get的话,一个正则.二是split,具体如下

    办法一: 正则
    function getAction(name) {
    var reg = new RegExp("(^|&)" + name
    + "=([^&]*)(&|$)", "i");
    var r =
    window.location.search.substr(1).match(reg);
    if (r != null) return
    unescape(r[2]); return null;
    }

    办法二: split

    function getAction() {

       var url = location.search; //获取url中"?"符后的字串

       var theRequest = new Object();

       if (url.indexOf("?") != -1) {

       var str = url.substr(1);

            strs = str.split("&");

             for(var i = 0; i < strs.length; i ++) {

                theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);

             }

            }

            return theRequest;

       }

第2个回答  2013-09-16
前后台传递参数,你放的地方和取得地方应该要一致
<%Object jsonstr =request.getAttribute("jsonArray");%>追问

真没注意这个地方。但是我改了之后还是空白 还是错的!

追答

eval一下试试

本回答被提问者采纳