天天看點

(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);