解决方案 »

  1.   

    {"k":["1","2","3"]}alert( decodeURIComponent(str) )
      

  2.   

    你alert的字符串是经过url encode处理过后的。
    decode + eval可以显示原来的json对象。
      

  3.   

    您好,我在http://www.jb51.net/article/34280.htm里用的是decodeURI来传递参数,如果放在两个页面就不会alert任何东西,放在一个页面用decodeURI为什么就可以,我并没有在里边使用decodeURIComponent啊``
      

  4.   

    而我在一个php页面嵌入一个js文件以后,使用decodeURI就是没法alert,但是使用decodeURIComponent就可以alert,请问是有什么原因 呢
      

  5.   

    PHP的:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title></title>
    <script language="javascript" src="map.js" >
    </script>  
    </head>
    <body onload="getInfo('<?php echo urlencode(json_encode($info))?>');">
    </body>  
    </html>
    JS的
    function getInfo(pos){
        var obj=eval('('+decodeURIComponent(pos)+')');
        alert(obj.username);
    }
      

  6.   


    测试代码贴出来。明天帮你看看吧。媳妇喊睡觉了。差不多最简单的就是这样了$info这个函数可以换成个数组array('k=>array('1','2','3')')
      

  7.   


    测试代码贴出来。明天帮你看看吧。媳妇喊睡觉了。我换了个号,给你发一下代码 function getInfo(pos){
        var obj=eval('('+decodeURI(pos)+')');
        alert(obj.k[0]);
    }
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title></title>
    <script language="javascript" src="map.js" >
    </script>  
    </head>
    <body onload="getInfo('<?php echo urlencode(json_encode(array('k'=>array('1','2','3'))));?>');">
    </body>  
    </html>
      

  8.   


    测试代码贴出来。明天帮你看看吧。媳妇喊睡觉了。我换了个号,给你发一下代码 function getInfo(pos){
        var obj=eval('('+decodeURI(pos)+')');
        alert(obj.k[0]);
    }
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title></title>
    <script language="javascript" src="map.js" >
    </script>  
    </head>
    <body onload="getInfo('<?php echo urlencode(json_encode(array('k'=>array('1','2','3'))));?>');">
    </body>  
    </html>
    不好意思,刚想起来。
    php中的urlencode函数会对 -_. 之外的所有非字母数字字符进行url编码,也就是说“=”号也被编码了。
    而在js中decodeURI只会对保留字符、基本字符、字符之外的字符进行解码(=号在保留字符中,不会被解码)
    decodeURIComponent与decodeURI的区别在于前者会对保留字符也做解码。
    因此,对于PHP中使用urlencode编码的字符串,为了保险起见,你应该使用js中的decodeURIComponent解码。
    而在js中,encodeURI与decodeURI,encodeURIComponent与decodeURIComponent应该配对使用。