• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >html5 > jQuery+JSONP跨域需要怎样实现

jQuery+JSONP跨域需要怎样实现

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-03

本文主要包含jQuery+JSONP,javascript,实现等相关知识,匿名希望在学习及工作中可以帮助到您
这次给大家带来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跨域需要怎样实现的详细内容,更多请关注微课江湖其它相关文章!

您可能想查找下面的文章:

  • jQuery+JSONP跨域需要怎样实现

相关文章

  • 2018-12-03弹性盒模型 flex box的认知与使用
  • 2018-01-07HTML5知识总结及原理剖析
  • 2018-12-03关于H5的pushState和replaceState的用法分析
  • 2017-08-06Html5游戏开发之乒乓Ping Pong游戏示例(一)
  • 2017-08-06IE9下html5初试小刀
  • 2018-12-03HTML5 Canvas画线技巧——实现绘制一个像素宽的细线_html5教程技巧
  • 2018-12-03HTML5中的视频元素
  • 2018-12-03Web App 开发使用哪种框架比较好?
  • 2018-12-03响应式自助建站效果怎么样
  • 2018-12-03可以用WebRTC来做视频直播吗?

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • HTML5-canvas的使用方法介绍
    • 优秀WEB前端UI框架推荐
    • html5中设置或返回音频/视频是否应该被静音的属性muted
    • webvtt字幕文件于srt等字幕文件如何相互转化呢?
    • 不可轻视HTML5!App三年内将被html5顶替彻底消失
    • 是不是表单中所有带 name 属性的都会被 form.submit() 提交?
    • HTML5游戏框架cnGameJS开发实录-游戏循环篇
    • 让IE9以下版本的浏览器兼容HTML5的方法
    • 写这样一个求婚网页,需要具备什么IT技能?
    • HTML5通用接口详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有