1.js如何解析后台傳過來的json字符串?
注意:js是無法直接接收和使用json或者Php的數據,用的話會出現undefined,所以要轉換一下。
方式一:
var str = '{"rows":[{"ID":0,"登錄賬號":"admin","登錄時間":"\/Date(1446772997000)\/","登錄地點":"河北石家庄","登錄IP":"115.181.15.99"}]}';
var obj = eval("(" + str + ")");
console.log(obj);
var ddd = function(str){
return eval("(" + str + ")");
}
var str = '{"rows":[{"ID":0,"登錄賬號":"admin","登錄時間":"\/Date(1446772997000)\/","登錄地點":"河北石家庄","登錄IP":"115.181.15.99"}]}';
var obj = ddd(str);
var rows = obj["rows"];
for(var i = 0; i < rows.length; i++){
var ri = rows[i];
for(var k in ri){
console.log(k + ": " + ri[k]);
}
}
方式二:
var data ="{}"; //json字符串
var obj = JSON.parse(data);
alert(obj.rows);
JSON.parse()和eval()的區別
json格式非常受歡迎,而解析json的方式通常用JSON.parse()但是eval()方法也可以解析,這兩者之間有什么區別呢?
JSON.parse()之可以解析json格式的數據,並且會對要解析的字符串進行格式檢查,如果格式不正確則不進行解析,而eval()則可以解析任何字符串,eval是不安全的。
比如下面的字符串:
var str = 'alert(1000.toString())';eval(str); JSON.parse(str);
用eval可以解析,並且會彈出對話框,而用JSON.parse()則解析不了。 其實alert並沒有什么壞處,可怕的是如果用惡意用戶在json字符串中注入了向頁面插入木馬鏈接的腳本,用eval也是可以操作的,而用JSON.parse()則不必擔心這個問題。
注意:某些低級的瀏覽器尚不支持JSON.parse(),可以到 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下載。
js如何接收PHP數組
1.如果你理解JSON數據格式的話,這個問題就異常簡單:
<?php
$a =array('1','2','3');
?>
<script language="javascript">
var obj =eval('<?php echo json_encode($a);?>');
alert(obj[0]);
alert(obj[1]);
alert(obj[2]);
</script>
2.如果不懂JSON,采用傳統的方法:
<script language="javascript">
var arr =new Array();
<?php
foreach($a as $key=>$value){
echo "arr[$key] ='$value';\n";
}
?>
alert(arr[0]);
</script>
如果是直接通過按鈕點擊傳遞的話:
先在JS里面定義一個全局變量,將PHP數組轉換后存儲到這個JS變量中,在下文中直接傳遞這個JS變量。例如:
<script language='javascript'>var obj=eval('<?php echo json_encode($a);?>');</script>
下下文的HTML中:
<button type="submit" name="action" onClick="aaa(obj)" >分配</button>
PHP數組和Json之間的轉換
之所以要用到Json,很多時候是因為使用ajax對象時,程序與JS函數之間的數據交互。因為JS不認識PHP中的數組,PHP也不認識JS中的數組或對象。Json很好的解決了這個問題注意:對象和數組兩種形式在JS中的調用時不一樣啊,對象用“.”調用,數組用下標[0]、[1]調用。還要注意在傳遞Json串時string類型的值要用引號括起來。
之所以要用到Json,很多時候是因為使用ajax對象時,程序與JS函數之間的數據交互。因為JS不認識PHP中的數組,PHP也不認識JS中的數組或對象。Json很好的解決了這個問題注意:對象和數組兩種形式在JS中的調用時不一樣啊,對象用“.”調用,數組用下標[0]、[1]調用。還要注意在傳遞Json串時string類型的值要用引號括起來。
<script type="text/javascript"> function getArray()
{
var arr = ["Jarry",23, ["www.xiaophper.com","wxyh_999@126.com"]];
alert(arr[0]); alert(arr[1]); alert(arr[2][0]);
alert(arr[2][1]);
}
getArray();
</script>
如果PHP數組的鍵都是數字,那么json_encode()返回一個數組形式的Json,如果PHP數組的鍵全是字符串。那么json_encode()就會返回一個對象形式的Json。
