最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery+JSONP跨域请求如何实现

来源:动视网 责编:小采 时间:2020-11-27 19:58:15
文档

jQuery+JSONP跨域请求如何实现

jQuery+JSONP跨域请求如何实现:这次给大家带来jQuery+JSONP跨域请求如何实现,实现jQuery+JSONP跨域请求的注意事项有哪些,下面就是实战案例,一起来看一下。 JSONP(JSON with Padding)是JSON的一种使用模式,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于
推荐度:
导读jQuery+JSONP跨域请求如何实现:这次给大家带来jQuery+JSONP跨域请求如何实现,实现jQuery+JSONP跨域请求的注意事项有哪些,下面就是实战案例,一起来看一下。 JSONP(JSON with Padding)是JSON的一种使用模式,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于
 这次给大家带来jQuery+JSONP跨域请求如何实现,实现jQuery+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>");
 }
 }
});

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

v-for索引index在html中的使用

Vue打包之后文件路径出错如何处理

文档

jQuery+JSONP跨域请求如何实现

jQuery+JSONP跨域请求如何实现:这次给大家带来jQuery+JSONP跨域请求如何实现,实现jQuery+JSONP跨域请求的注意事项有哪些,下面就是实战案例,一起来看一下。 JSONP(JSON with Padding)是JSON的一种使用模式,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于
推荐度:
标签: 访问 实现 json
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top