zoukankan      html  css  js  c++  java
  • json和jsonp

    1. 场景

    在拉京东城市选择的基础数据时候,遇到被服务器拒绝的情况,也就是ajax跨域问题

    2. json和jsonp

    说的直白一点,在我们做ajax异步的一些功能的时候,一定会或多或少的遇到两个问题,(1、数据的交换。2、跨域问题)

    JSONP的最基本的原理是:动态添加一个

    <script type="text/javascript">
    function jsonpCallback(result) 
    { 
      alert(result.msg); 
     }
     </script>
    <script type="text/javascript" src=" http://crossdomain.com/jsonServerResponse?jsonp= jsonpCallback"></script>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    从红色的地方可以看出,两个名字要一直,不过一般采用callback然后后面加一个“?”此时jquery会自动生成一个函数名,这样可以做到发送很多请求的时候,并不会互相影响。 
    同源策略 :即JavaScript只能访问与包含它的文档在同一域下的内容。jsonp可以跨越同源策略,当我们使用了jsonp,将会是另外一种协议通信了。 
    JSONP的优点是:它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后可以通过调用callback的方式回传结果。 
    JSONP的缺点则是:它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。

    3.使用方法

    $.getJSON(" http://跨域的dns/document!searchJSONResult.action?name1="+value1+"&jsoncallback=?",
        function(json){
        if(json.属性名==值){
            // 执行代码
        }
    });
    $.ajax({
        async:false,
        url: http://跨域的dns/document!searchJSONResult.action,
        type:"GET",
        dataType:'jsonp',
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    通常情况一般是这两种使用方法,在跨域问题上,非常简单。

  • 相关阅读:
    Java 线程安全与锁优化
    Linux内常用的BASH命令
    Java导出CSV用MS Office Excel打开乱码问题一招制胜办法
    素数个数求解与素数的判定
    Java 线程间的通信wait(), notify(), join(), ThreadLocal讲解
    Java volatile关键字特性介绍
    项目架构相关
    HTTP POST 请求 及 @RequestParam @RequestPart @RequestBody
    Web安全相关
    Thread和Runable比较
  • 原文地址:https://www.cnblogs.com/jamesf/p/4751409.html
Copyright © 2011-2022 走看看