W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
JSON和XML沒(méi)什么太大區(qū)別,不過(guò)JSON有一個(gè)更大范圍的應(yīng)用,那就是,跨域的數(shù)據(jù)調(diào)用。由于安全性問(wèn)題,AJAX不支持跨域調(diào)用,這樣要調(diào)用不同域名下的數(shù)據(jù),很麻煩。下面這個(gè)例子,足以展示php用json如何進(jìn)跨域調(diào)用了。
index.html
<script type="text/javascript"> function getProfile(str) { var arr = str; document.getElementById('nick').innerHTML = arr.nick; } </script> <body>
<div id="nick"></div>
</body> <script type="text/javascript" src="http://www.openphp.cn/demo/profile.php" rel="external nofollow" ></script>
<?php
$arr = array(
'name' => 'tanteng',
'nick' => 'pony',
'contact' => array(
'email' => 'a@gmail.com',
'website' => 'http://aa.sinaapp.com',
)
);
$json_string = json_encode($arr);
echo "getProfile($json_string)";
?>
當(dāng)index.html調(diào)用profile.php時(shí),JSON字符串生成,并作為參數(shù)傳入getProfile,然后將昵稱插入到div中,這樣一次跨域數(shù)據(jù)交互就完成了,是不是特別簡(jiǎn)單。
PHP json格式和js json格式 js跨域調(diào)用實(shí)現(xiàn)代碼
先看一個(gè)js函數(shù)
function jsontest()
{
var json = [{'username':'crystal','userage':'20'},{'username':'candy','userage':'24'}];
alert(json[1].username);
var json2 = [['crystal','20'],['candy','24']];
alert(json2[0][0]);
}
$arr = array (
array (
'catid' => '4',
'catname' => '程程',
'meta_title' => '程程博客'
),
array (
'catid' => '6',
'catname' => 'climber',
'meta_title' => '攀登者',
)
);
$jsonstr = json_encode($arr);
echo $jsonstr;
這段代碼中,$arr是一個(gè)數(shù)組,我們采用 json_encode 將$arr 轉(zhuǎn)換為了 json 格式 。 $arr = array (
array (
'catid' => '4',
'catname' => '程程',
'meta_title' => '程程博客'
),
array (
'catid' => '6',
'catname' => 'climber',
'meta_title' => '攀登者',
)
);
$jsonstr = json_encode($arr);
我們?cè)俳⒁粋€(gè) json.html 文件
<SCRIPT type=text/javascript src="php_json.php"></SCRIPT>
<SCRIPT language=javascript type=text/javascript>
function loadjson(_json)
{
if(_json)
{
for(var i=0;i<_json.length;i++)
{
alert(_json[i].catname);
}
}
}
loadjson(jsonstr)
</SCRIPT>
這樣,我們?cè)诓榭?json.html的時(shí)候,loadjson(jsonstr) 就會(huì) 提示 “程程”和“climber” Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: