zoukankan      html  css  js  c++  java
  • [前端]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
                }
            });

     

        

    只有让自己变得优秀,才有资格对这个世界指手画脚。
  • 相关阅读:
    Agile PLM opmn can not started
    参数化模块设计技术
    Enable the Load to CAD Action menu
    Agile Product Collaboration
    Configuration Handling SolidWorks
    SolidWorks 动画模拟仿真
    Agile PLM PC 模块实施方法论
    单因素方差分析的SAS实现
    非参中多样本的趋势秩检验的计算机实现
    游戏数据分析中“次日留存率”与“游戏生命周期第N天上线率”的SAS实现
  • 原文地址:https://www.cnblogs.com/alasq/p/5986537.html
Copyright © 2011-2022 走看看