您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 宜宾分类信息网,免费分类信息发布

jQuery+JSONP跨域需要怎样实现

2024/2/28 15:06:20发布21次查看
这次给大家带来jquery+jsonp跨域需要怎样实现,jquery+jsonp跨域实现的注意事项有哪些,下面就是实战案例,一起来看一下。
了解了jsonp之后,大家应该也都明白了,jsonp主要就是用来实现跨域的获取数据,今天我们就来详细探讨下如何在实际中应用jsonp实现跨域
jsonp(json with padding)是json的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 html 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 json 资料,而这种使用模式就是所谓的 jsonp。用 jsonp 抓到的资料并不是 json,而是任意的javascript,用 javascript 直译器执行而不是用 json 解析器解析。
上面一段话来自百度百科,概念永远是那么抽象难懂,看例子才是最直观的表现。例子看的多了,领悟到那个点了,自然自己也会学着抽象的描述了。这就是为什么常说“学习知识是从薄到厚,又由厚到薄的过程”。好了扯远了。下面直接来看一个例子。
问题:本地现有一个页面demo.html需要从http://localhost:3561/user/getallnames获取数据并展示。
解答:由于问题中的两方不在同一服务器,故需要使用jsonp来跨域访问。
① 客户端编写
客户端使用jquery中提供的$.getjson方法来跨域访问。getjson有3个参数:
i.   url:请求地址;
ii.  data:发送到服务端的参数;
iii. callback:成功时的回调函数。
getjson的使用方法和普通的$.get方法基本一致,不同的地方在于getjson需要在url后面的参数部分加上callback=?这一固定部分,jquery 将自动替换 ? 为正确的函数名,以执行回调函数。然后在回调函数中操作从异域返回的json对象,回调函数callback的参数即为该json对象。
<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/>   <title></title> </head> <body>   <ul id="namelist"></ul>   <script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>   <script type="text/javascript">     $.getjson(http://localhost:3561/user/getallnames?callback=?, function(json) {       for (var i = 0; i < json.length; i++) { $("#namelist").append("<li> + json[i] + </li>);       }     });   </script> </body> </html>
② 服务端编写
服务端的逻辑主要是将数据序列化为json字符串,然后封装成callback(json)的形式,callback为jquery自动生成并传到服务端的函数名称。下面使用c#实现:
public class usercontroller : controller {     public string getallnames(string callback)   {     string[] names = new string[] { 张三丰, 张无忌, 令狐冲, 杨过, 郭靖 };     javascriptserializer jss = new javascriptserializer();     string json = jss.serialize(names);     return string.format({0}({1}), callback, json);   } }
至此,便成功解决了问题。
思考:如果服务端已经写死了callback(如:return string.format(moty({0}), json);),那么客户端该怎么写呢?
参考:
$.ajax(http://localhost:3561/user/getallnames, {   jsonpcallback: moty,   datatype: jsonp,   success: function(json) {     for (var i = 0; i < json.length; i++) { $("#namelist").append("<li> + json[i] + </li>);     }   } });
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
jquery中select组件的使用方法
如何实现jquery回车登录效果
鼠标移出事件的案例以及详解
jquery自定义函数应用以及解析
以上就是jquery+jsonp跨域需要怎样实现的详细内容。
宜宾分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录