来源:自学PHP网 时间:2014-11-29 13:28 作者: 阅读:次
[导读] 文章从JSON和JSONP区别开始讲起,用实例来对比他们之间的不同之处,然后详细讲解了jQuery中的ajax jsonp的使用并给出了示例及详细参数说明。这里推荐给大家,希望对小伙伴能有所帮助...
JSON和JSONP 复制代码 代码如下: //JSON { “name”: “sb” } 复制代码 代码如下: //JSONP callback({ “name”: “sb” }) 出于安全考虑,脚本(AJAX)不能访问非本域的内容。但是,静态资源是不受域策略限制的,可以加载任意域的脚本、样式、图片等静态资源,JSOP就是利用这种原理来实现跨域获取数据的。 复制代码 代码如下: //定义shoPrice函数 function showPrice(data) { alert("Symbol: " + data.symbol + ", Price: " + data.price); } 复制代码 代码如下: //在Web页面中包含showPrice函数和参数 <script type="text/javascript"> function showPrice(data) { alert("Symbol: " + data.symbol + ", Price: " + data.price); } </script> <script type="text/javascript">showPrice({symbol: 'IBM', price: 91.42});</script> 本例展示了如何将静态JSON数据作为参数调用JavaScript函数。 复制代码 代码如下: <script type="text/javascript"> // This is our function to be called with JSON data function showPrice(data) { alert("Symbol: " + data.symbol + ", Price: " + data.price); } var url = “remote.js”; // 外部脚本的URL // 动态插入脚本 var script = document.createElement('script'); script.setAttribute('src', url); // 加载script document.getElementsByTagName('head')[0].appendChild(script); </script> remote.js的内容和之前在标签里写的一样是: 复制代码 代码如下: <script type="text/javascript"> // This is our function to be called with JSON data function showPrice(data) { alert("Symbol: " + data.symbol + ", Price: " + data.price); } var url = “remote.js?callback='showPrice'”; // 外部脚本的URL // 动态插入脚本 var script = document.createElement('script'); script.setAttribute('src', url); // 加载script document.getElementsByTagName('head')[0].appendChild(script); </script> 后端用PHP实现的JSONP服务的代码片段: 复制代码 代码如下: $jsonData = getDataAsJson($_GET['symbol']); echo $_GET['callback'] . '(' . $jsonData . ');'; // 打印: showPrice({"symbol" : "IBM", "price" : "91.42"}); 很好的契合了JSONP的定义,打包在函数调用中的JSON数据。 以上几个例子来自: 使用 JSONP 实现跨域通信,第 1 部分: 结合 JSONP 和 jQuery 快速构建强大的 mashup 在jQuery中使用JSONP AJAX和JSONP在jQuery中的调用方式看起来极为相像,千万不要被这种现象迷惑,它们本质上有很大不同。AJAX是通过XMLHttpRequest对象获取非页面内容,而JSONP是动态的添加<script>标签来调用服务器脚本。虽然jQuery把JSONP作为AJAX的一种形式进行了封装,但JSONP并不是AJAX的一种形式或一种特例。 复制代码 代码如下: $.ajax({ url: "http://query.yahooapis.com/v1/public/yql", jsonpCallback: "showPrice", jsonp: "callback", // tell jQuery we're expecting JSONP dataType: "jsonp", data: { q: "select title,abstract,url from search.news where query=\"cat\"", format: "json" }, // work with the response success: function( data ) { console.log( data ); // server response } }); ajax请求参数说明: dataType String 预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。在1.4中,JSON就会生成一个JavaScript对象,而script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值: "xml": 返回 XML 文档,可用 jQuery 处理。 "html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。 "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载) "json": 返回 JSON 数据 。 "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。 "text": 返回纯文本字符串 复制代码 代码如下: function success_jsonpCallback(data) { success(data); } 以上就是本文的全部内容了,大家是否对jsonp有了细致的了解了呢。有什么疑问也请给我留言,大家共同探讨。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com