首页前端开发HTMLjQuery+JSONP跨域需要怎样实现

jQuery+JSONP跨域需要怎样实现

时间2024-01-23 05:54:03发布访客分类HTML浏览477
导读:收集整理的这篇文章主要介绍了jQuery+JSONP跨域需要怎样实现,觉得挺不错的,现在分享给大家,也给大家做个参考。这次给大家带来jquery+JSONP跨域需要怎样实现,jQuery+JSONP跨域实现的注意事项有哪些,下面就是实战案例...
收集整理的这篇文章主要介绍了jQuery+JSONP跨域需要怎样实现,觉得挺不错的,现在分享给大家,也给大家做个参考。这次给大家带来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跨域需要怎样实现的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

javascript

若转载请注明出处: jQuery+JSONP跨域需要怎样实现
本文地址: https://pptw.com/jishu/583851.html
如何实现jquery回车登录效果 jQuery中如何实现toggle方法

游客 回复需填写必要信息