天天看点

(java gui) 和 (网页 js) 通过url传值(如json)时,注意问题

(java gui) 和 (网页 js)  通过url传值时,如果不涉及特殊字符可以不进行编码,

但是如果有特殊字符,比如中文,及符号 就要进行编码。

java 使用 java.net.urlencoder.encode(str, "utf-8");编码,

java 使用java.net.urldecoder.decode(str,"utf-8");解码,

js 使用decodeuricomponent(str);解码

js  使用 encodeuricomponent(str)编码

js获得url中传的值

<script language="javascript">//用于获取url中的传的值

function getrequest() {

  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;

}

</script>

js  解析json字符串

原始数据  var jsonstr= "{name:'1',value:'0'}"

var json=eval("("+jsonstr+")");//jsonstr为json字符串,也就是从url中获得的,要把他转化成json对象

获得name值 var name=json.name;

注意 为什么要 eval这里要添加 “("("+data+")");//”呢?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在js中,它会被当成一个语句

块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理javascript代码的时候强制将括号内的表达式(expression)转化为

对象,而不是作为语 句(statement)来执行。

js解析 json 对象

var value2 = {

     "list":[

      {"password":"1230","username":"coolcooldool"},

      {"password":"thisis2","username":"okokok"}

      ],

      "array":[

      ]

};//最外面不加引号为json对象

   var obj2 = eval(value2);

   alert(obj2.list[0].password);