这次给大家带来jQuery+JSONP跨域请求如何实现,实现jQuery+JSONP跨域请求的注意事项有哪些,下面就是实战案例,一起来看一下。 JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的<a href="http://www.php.cn/wiki/48.html" target="_blank">JavaScript</a>,用 JavaScript 直译器执行而不是用 JSON 解析器解析。</p> <p style="text-align: left;"> 上面一段话来自百度百科,概念永远是那么抽象难懂,看例子才是最直观的表现。例子看的多了,领悟到那个点了,自然自己也会学着抽象的描述了。这就是为什么常说“学习知识是从薄到厚,又由厚到薄的过程”。好了扯远了。下面直接来看一个例子。</p> <p style="text-align: left;"> <img alt="" src="https://img.php.cn/upload/article/000/061/021/3f2454ccbb7c73a79825cc948f18f305-0.png"></p> <p style="text-align: left;"> 问题:本地现有一个页面demo.html需要从http://localhost:3561/User/GetAllNames获取数据并展示。</p> <p style="text-align: left;"> 解答:由于问题中的两方不在同一服务器,故需要使用jsonp来跨域访问。</p> <p style="text-align: left;"> ① 客户端编写</p> <p style="text-align: left;"> <a href="http://www.php.cn/code/10550.html" target="_blank">客户端使用</a>jQuery中提供的$.getJson方法来跨域访问。getJson有3个参数:</p> <p style="text-align: left;"> I. url:请求地址;</p> <p style="text-align: left;"> II. data:发送到服务端的参数;</p> <p style="text-align: left;"> III. callback:成功时的<a href="http://www.php.cn/code/8530.html" target="_blank">回调函数</a>。</p> <p style="text-align: left;"> getJson的使用方法和普通的$.get方法基本一致,不同的地方在于getJson需要在url后面的参数部分加上callback=?这一固定部分,jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。然后在回调函数中操作从异域返回的json对象,回调函数callback的参数即为该json对象。</p> <pre><!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"> $.getJSON("http://localhost:3561/User/GetAllNames?callback=?", function(json) { for (var i = 0; i < json.length; i++) { $("#nameList").append("<li>" + json[i] + "</li>"); } });