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

关于js/jquery url传参的问题
利用url发送数据到test.html,alert弹出"名字:"  代码如下:

function test(){
ta_field=[{"thead":"姓名:"},{"thead":"性别:"}];
alert(ta_field[0].thead);
window.open("./test.html?staff_detil="+ta_field)
}

接收端alert弹出"undefined"找不到。  代码如下:

<script type="text/javascript">
function getUrlParam(name) 

var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象  
var r = window.location.search.substr(1).match(reg);  //匹配目标参数  
if (r!=null) return unescape(r[2]); return null; //返回参数值  

alert(getUrlParam('staff_detil').thead);

如上所示,传参之前可以取到值,传参之后就取不到了,难道不能这样传参的吗?
js jquery html

------解决方案--------------------
你这样写url是
./test.html?staff_detil=object,object

你觉得能取到?

可以试试这样写:
ta_field='[{"thead":"姓名:"},{"thead":"性别:"}]';
不过不推荐在url中带json格式字符串
而且有中文的话需要进行url编码

------解决方案--------------------
url 传参,只能传递字符串
------解决方案--------------------
function Url(urlstr)
{
    this.paraMap = new Map();

    if (urlstr.indexOf('?') > -1)
    {
        urlstr = urlstr.substr(1);
    }
    if (urlstr.indexOf('&') > -1)
    {
        var pvarr = urlstr.split('&');
        for (var i = 0; i < pvarr.length; i++)
        {
            var pv = pvarr[i].split('=');
            this.paraMap.put(pv[0], pv[1]);
        }
    }
    else
    {
        var pv = urlstr.split('=');
        this.paraMap.put(pv[0], pv[1]);
    }
}

Url.prototype =
{
    getvalue: function(para)
    {
        return this.paraMap.get(para);
    }
}