书签 分享 收藏 举报 版权申诉 / 15

类型json学习.docx

  • 文档编号:3876444
  • 上传时间:2022-11-26
  • 格式:DOCX
  • 页数:15
  • 大小:594.88KB
      

40.{/foreach}  

41.

none;z-index:

100">

  

42.  

43.  

运行结果如下(Win7+IE9.0):

当鼠标经过三个标题时,会触发mouseenter事件显示提示语句。

 

JSON进阶第二篇AJAX方式传递JSON数据

分类:

 HTML/javascript/PHP2012-01-1710:

14 2498人阅读 评论(4) 收藏 举报

上一篇《JSON进阶第一篇在PHP与javascript中使用JSON》示范了在PHP和javascript中如何使用JSON类型的数据,本篇将介绍用AJAX方式得到JSON数据从而动态生成标题和提示语句。

这种技术在静态页面向网站后台请求动态数据时比较有效,因为网站首页的访问量比较大,整个页面要静态化处理,但这个页面上的某些数据又要实时更新,这时就可以在静态页面中使用用AJAX来请求后台实时生成的JSON数据。

关于AJAX技术可以参考《PHP访问MySql数据库高级篇AJAX技术》,这里详细介绍如何使用AJAX来传递JSON数据。

 

本示例程序分为json2.php和json2.html,json2.html上有个按钮,按下后将发送AJAX请求得到json2.php返回的数据。

1.json2.php

[php] viewplaincopy

1.

php  

2.// by MoreWindows(  )  

3.$article_array = array(  

4.    "count" => 3,  

5.    array(  

6.        "id"=>"001",  

7.        "title"=>"PHP访问MySql数据库 初级篇",   

8.        "link"=>"  

9.    ),  

10.    array(  

11.        "id"=>"001",  

12.        "title"=>"PHP访问MySql数据库 中级篇 Smarty技术",   

13.        "link"=>"  

14.    ),  

15.    array(  

16.        "id"=>"001",  

17.        "title"=>"PHP访问MySql数据库 高级篇 AJAX技术",   

18.        "link"=>"  

19.    ),  

20.);  

21.$article_json = $article_array);  

22.echo $article_json;  

23.?

>  

2.Json2.html  

[html] viewplaincopy

1.

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:

//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

2.

//www.w3.org/1999/xhtml">  

3.  

4.ajax方式请求json  

5.  

6.  

7.//显示提示  

8.function OnMouseEnterDivInfo(thisObj, title)  

9.{  

10.    $("#article_link").css("position","absolute");  

11.    $("#article_link").css("left","20px");  

12.    $("#article_link").css("top",$(thisObj).offset().top + $(thisObj).height());  

13.    $("#article_link").html("链接地址" + title);  

14.    $("#article_link").slideDown("fast");  

15.    $(thisObj).css("background-color","red");     

16.}  

17.//隐藏提示  

18.function OnMouseLeaveDivInfo(thisObj)  

19.{  

20.    $("#article_link").hide();  

21.    $(thisObj).css("background-color","yellow");  

22.}    

23.//jquery通过AJAX方式得到JSON数据  

24.$(document).ready(function(){  

25.    $("#GetDataBtn").click(function(){  

26.        $.post("json2.php", {}, function(data){     

27.            var g_jsonstr = JSON.parse(data);  

28.            var ilen = g_jsonstr['count'];  

29.            var detailhtml = "";  

30.            for (var i = 0; i < ilen; i++)  

31.            {  

32.                var divhtml = '';  

33.                divhtml += '

' + g_jsonstr[i]['title'] + '

';  

34.                divhtml += '

';  

35.                detailhtml += divhtml;  

36.            }  

37.            $("#detail").html(detailhtml);//生成新的标题区域  

38.            $("#detail").slideDown("slow");  

39.        });  

40.    });  

41.});  

42.  

43.  

44.div  

45.{  

46.    font-family:

sans-serif;  

47.}  

48.  

49.     

50.  

51.  

52.  

53.

  

54.

none;z-index:

100">

  

55.  

56.  

运行效果如下:

  

JSON进阶第三篇apache多域名及JSON的跨域问题(JSONP)

本文先介绍如何为apache配置多域名,然后再用JSONP(JSONwithPadding)来解决JSON的跨域问题。

阅读本文之前,推荐先参阅《JSON进阶第二篇AJAX方式传递JSON数据》。

 

一.apache配置多域名

在apache的conf目录下找到httpd.conf,然后在该文件最后增加如下内容:

#声明使用虚拟主机过滤规则

NameVirtualHost*:

80

#虚拟主机localhost

80>

ServerName localhost

DocumentRoot"D:

\xampp\htdocs\www"

#虚拟主机

80>

ServerName 

DocumentRoot"D:

\xampp\htdocs\"

其中第一个是保证原有的localhost还可以继续工作,第二个为新加域名。

然后再修改host文件(在C:

\Windows\System32\drivers\etc\)

增加:

注意修改httpd.conf后要重启下apache服务。

 

将《JSON进阶第二篇AJAX方式传递JSON数据》文中的json2.php拷贝到D:

\xampp\htdocs\目录中再在浏览器中输入网址

运行结果如下:

在浏览器中能看到如上所示的JSON字符串说明已经成功为apache增加了新的域名,接下来就来体验下JSON的跨域名问题。

将json2.html中“$.post("json2.php",{},function(data){”的“json2.php”改成“

用Firefox的Firebug查看点击按钮后AJAX响应的详细过程,可以看到AJAX请求信息已经发送到服务器上了(就是那个127.0.0.1:

80),但因为安全性问题,服务器返回的数据被屏蔽了——这就是大名鼎鼎的跨域问题。

 

二.JSONP——解决JSON跨域问题

使用JSONP(JSONwithPadding)就可以解决JSON的跨域问题,JSONP的原理可以访问http:

//zh.wikipedia.org/zh-cn/JSONP,简单的说就是利用了

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开