百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[技术交流] 某网站后台用php脚本得到一个JSON格式的数据,交给前台javascript进行处理,使用JS... [复制链接]
查看:912 | 回复:4

42

主题

66

帖子

130

积分

落伍者(一心一意)

Rank: 1

贡献
136
鲜花
4
注册时间
2009-8-14
发表于 2013-4-1 11:51:58 | |阅读模式 来自 中国江苏南京
某网站后台用php脚本得到一个JSON格式的数据,交给前台javascript进行处理,使用JSON实现数据的跨域调用

后台profile.php代码:

<?php
$arr = array(
'firstname' => iconv('gb2312', 'utf-8', '非诚'),
'lastname' => iconv('gb2312', 'utf-8', '勿扰'),
'contact' => array(
'email' =>'admin@xxx.com',
'website' =>'http://www.xxx.net',
)
);
//将一个数组JSON
$json_string = json_encode($arr);
//此处注意,双引号能对里面的变量当变量进行处理,单引号则不会
echo "getProfile($json_string)";
?>

需要指出的是,在非UTF-8编码下,中文字符将不可被encode,结果会出来空值,所以,如果你使用 gb2312编写PHP代码,那么就需要将包含中文的内容使用iconv或者mb转为UTF-8再进行json_encode。
前台index.html代码:

<script type="text/javascript">
function getProfile(str) {
var arr = str;
document.getElementById("firstname").innerHTML = arr.firstname;
}
</script>
<body>
<div id="firstname"></div>
</body>
<!-- 使用JSON实现跨域的数据调用,此处如将“profile.php”改为“http://另外一个域名/profile.php”就更能看出跨域了-->
<script type="text/javascript" src="profile.php"></script>

将JSON格式的数据直接赋值给javascript中的变量,就变成数组了,接下来操作起来就会非常的方便,此处如果使用XML做为数据传输,后续操作就不方便喽。
很显然,当index.html调用profile.php时,JSON字符串生成,并作为参数传入getProfile,然后将昵称插入到div 中,这样一次跨域数据交互就完成了

31

主题

694

帖子

17

积分

落伍者(一心一意)

Rank: 1

贡献
449
鲜花
0
注册时间
2013-2-26

QQ绑定落伍手机绑定

发表于 2013-4-1 14:15:08 | 来自 中国浙江杭州
顶一下,你们都是高手

42

主题

462

帖子

803

积分

落伍者(一心一意)

Rank: 1

贡献
1549
鲜花
1
注册时间
2009-8-30
发表于 2013-4-1 18:56:53 | 来自 中国浙江宁波
高手啊。。。。

5

主题

3707

帖子

4617

积分

落伍者(两全齐美)

Phper

Rank: 2

贡献
1249
鲜花
0
注册时间
2004-4-6
发表于 2013-4-4 02:55:06 | 来自 中国北京
这是 jsonp (建议搜一下) 的原理。

好吧,我是来挂签名的。
头像被屏蔽

129

主题

354

帖子

74

积分

禁言

贡献
47
鲜花
1
注册时间
2012-6-21
发表于 2013-4-4 11:54:29 | 来自 中国浙江杭州
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-5-22 19:23 , Processed in 0.114203 second(s), 36 queries , Gzip On.

返回顶部