• [前端]jsonp


    jsonp 

    之前清蒸了几只ajax螃蟹,味道不错,不过呢?螃蟹虽好,肉却太少哦!

    ajax出现,解决了页面不刷新的情况下与后台进行通讯与数据交换,但是有一个致命的缺陷,他是不能跨域的。

    跨域:  <==慨念问题点左边

    总之端口号那个冒号前面的任何一个地方不一样都是跨域请求。

    我们知道  img标签的src   script标签的src 是可以进行跨域请求数据的,于是不知是哪位大神,异想天开曲线救国,使用script标签进行后台的数据获取,

    当然这个script标签是我们用js脚本动态生成的,举个栗子

    首先我准备一个写好的脚本

    1.js

    funDemo({"result":"远程数据"});

    再写一个html文件

    1.html

    <!DOCTYPE html >
    <head>
        <title>1</title>
        <script type="text/javascript">
        var funDemo= function(data){
         alert( data.result);
        };
        </script>
        <script type="text/javascript" src="http://aaa.com/1.js"></script>
    </head>
    <body>
     
    </body>
    </html>

    function funDemo(data){alert(data.result);} 函数这么声明也是一样的!!!

    其实就是在html文件上声明一个名字叫,funDemo的函数,里面有一个参数

    然后,执行了一个远程的(跨域的)js代码,调用了这个函数,远程的js提供数据,作为参数

    funDemo({"result":"远程数据"});

    那么新问题来了,虽然能这样获取到远程的数据,但是这个函数名必须与后台的函数名保持一致,解决方案是在src的后面提供一个函数名的参数,

    后台的程序根据函数名动态的生成这个js文件

    1.html 修改

    <script type="text/javascript" src="http://aaa.com/1.php?&callback=funDemo"></script>

    后台的话可以考虑用字符串拼接的方式来返回这个js

    1.php

    <?php
    
    header('Content-Type:application/x-javascript');
    
    $callback=$_REQUEST['callback'];
    
    echo "function $callback(data){alert(data.result);}"
    >

    我稀烂的PHP也不知道有没有写对=.=

    这样就大功告成了。

    jQuery里面的jsonp是放在ajax里面的,但是真心半毛钱关系木有呀!!

    螃蟹可以吃,虾也可以吃,都是清蒸,一样的做法。但是他们真心不是一种东西!!!!

    附赠ajax中使用jsonp

     $.ajax({
                type : "get",
                url : "1.php",
                dataType : "jsonp",
                jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
                jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
               success : function(json){
                   //do something
                 },
                error:function(){
                    //do something
                }
            });

     

        

    只有让自己变得优秀,才有资格对这个世界指手画脚。
  • 相关阅读:
    进阶篇:3.2.5)DFM钣金-常见装配和成形结构
    基础篇:3.4)3d模型绘制的好坏会影响产品合格率(注意点)
    进阶篇:2.1)DFMA实施障碍和关键
    [洛谷P2224][题解][HNOI2001]产品加工
    [洛谷P1262][题解]间谍网络
    [洛谷P3919][题解]可持久化数组&&主席树讲解
    [洛谷P5677][题解][GZOI2017]配对统计
    [洛谷P1040][题解]加分二叉树
    [校内赛3-1][题解]folder
    [校内赛3-3][题解]block
  • 原文地址:https://www.cnblogs.com/alasq/p/5986537.html
Copyright © 2020-2023  润新知