• 技术文章 >php教程 >PHP源码

    PHP JSONP跨域实现程序详解

    2016-06-08 17:23:58原创463
    在网站开发中跨域是一个头痛的事情,我经常要需要解决各种跨域问题,今天我来介绍在php中利用JSONP跨域实现方法,各位J友可参考参考。


    先看一个实例

    代码如下 复制代码


    $("#btn").click(function(k) {
    //...
    var j = form.serializeArray();//序列化name/value
    $.ajax({
    url: "另一个域名/test.php",
    dataType: 'jsonp',
    data: j,
    jsonp: 'jsonp_callback',
    success: function(json) { //返回的json数据
    json = json || {};
    if (json.msg=='err'){
    alert(json.info);
    }else if (json.msg=="ok"){
    alert('提交成功');
    }else{
    alert('提交失败');
    }
    },
    timeout: 3000
    })
    //...
    });


    php部分:

    代码如下 复制代码
    $jsonp_callback=$_GET['jsonp_callback'];
    //...
    //如果正确
    echo $jsonp_callback,'({"msg":"ok"})';
    5.//如果错误
    echo $jsonp_callback,'({"msg":"err","info":"因人品问题,发送失败"})';

    //...值得注意的是采用jsonp 方式,beforeSend / error 都不能用了,所以beforeSend里面用js实现的验证只能用ajax在服务器端test.php上面验证了。

    域名下面有这么个html文件testjsonp.html:

    代码如下:

    代码如下 复制代码




    Untitled Page





    注意,要真正运行上面的代码可能需要jquery的文件,你可以将

    代码如下 复制代码

    改为你目录中jquery的文件路径:
    如:

    代码如下 复制代码

    然后,你可以再找个另外一个域名的web目录,将文件jsonp.php:

    代码如下:

    代码如下 复制代码
    $callback = $_GET[“callback“];
    $a = array(
    'code'=>'CA1998',
    'price'=>'6000',
    'tickets'=>20,
    'func'=>$callback,
    );
    $result = json_encode($a);
    echo “flightHandler($result)“;
    exit;

    放到这个目录下面去。这样就可以测试了。
    直接在浏览器访问testjsonp.html.就可以看到效果了

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp ldquo JSONP quot callback
    上一篇:php中preg_match_all函数用法详解 下一篇:php 全面禁止浏览器缓存页面内容详解
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 检测移动设备的php代码(手机访问)• SmartyZip,一个Smarty的装载类• php 二级联动菜单• 让Windows主机在IIS支持PHP和MySQL• PHP一个敏感信息过滤思路
    1/1

    PHP中文网