• 关于ajax跨域的一些说说


    跨域:跨当然是跨过去,域当然是别的服务器 (说白点就是去别服务器上取东西) 只要协议、域名、端口有任何一个不同,都被当作是不同的域

    ajax 是一种请求响应无刷新技术(xmlhttqrequest对象请求服务器  服务器响应数据到客户端)

    当然ajax跨域就是请求别的服务器的东西,好了说了这么多,下面看一个类似跨域原理的东西

    下面是我创建的两个应用程序 test1 和test 2 

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="Scripts/test1.js"></script>
    </head>
    <body>
    
    </body>
    </html>
    test1.js 代码
    alert('我是test1网站');

    弹出 alert('我是test1网站')

    //下面是testWeb2应用程序

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="http://localhost:10603/testWeb1/Scripts/test1.js"></script>
    </head>
    <body>
    
    </body>
    </html>

    testWeb2应用程序 也会弹出 alert('我是test1网站')

    哦,我能引求到到test1Web应用程序的js 没错的确能请求到 因这功要归于 src

    <script>标签的src属性并不被同源策略所约束,所以可以获取任何服务器上脚本并执行。

    所以我们ajax跨域可以利用 src来实现(因为真实的ajax跨域本是一个 伪命题)

    下面是引用百度百科关于josnp的一段话

    Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料。
    
    由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的 <script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

    //上个请求google的地址

    q是搜索关键字,callback 是回调函数名

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script type="text/javascript" src="Scripts/test1.js"></script>
    
        <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
        <script type="text/javascript">
    
            $(function () {
                $("#btnAdd").click(function () {
                    $.ajax({
                        type: "get",
                        url: "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=apple&callback=result",
                        success: function (data) {
                            alert(data);
                        }
    
                    });
                });
            });
        </script>
    </head>
    <body>
    <input type="button" id="btnAdd" value="测试" />
    </body>
    </html>

    //IE 和google chrome弹出效果如下:

    //这时候我们直接用XMLHttpRequest请求不同域上的数据时,是不可以了

    但是在页面用src 引用不同的脚本是可以的json正是用了这个特性

      <script type="text/javascript">
            function addScriptTag(src) {
                var script = document.createElement('script');
                script.setAttribute("type", "text/javascript");
                script.src = src;
                document.body.appendChild(script);
            }
    //调用加载ScrptTag函数 window.onload
    = function(){ //搜索apple,将自定义的回调函数名result传入callback参数中 addScriptTag("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=apple&callback=result"); } //自定义的回调函数result function result(data) { //我们就简单的获取apple搜索结果的第一条记录中url数据 alert(data.responseData.results[0].unescapedUrl); alert(data.responseData.results[0].cacheUrl); } </script>


  • 相关阅读:
    8.18 二讲背包问题之完全背包
    8.18 动态规划——背包问题之01背包
    8.17 动态规划——书的抄写
    7.25 二分查找模板
    7.19 股票问题
    7.12 枚举-Jam的计数法
    7.12 递归——双色hanoi塔问题
    7.11 NOIP2007普及组第3题 守望者的逃离
    高数之泰勒公式
    数据结构_线性表之链表(1)
  • 原文地址:https://www.cnblogs.com/yzenet/p/3431207.html
Copyright © 2020-2023  润新知