jsonp跨域传递数据,前端回调后端的数据进行处理

jsonp格式包含两个部分:回调和数据;
回调:是在页面接收到响应之后应该调用的函数
数据:作为参数传给回调函数的JSON数据
这里的前端http://127.0.0.1:5500/jsonp.html
后端:http://xuejs.xyz/jsonp.php

//jsonp.html

<html>
    <head>
        <meta http-equiv="content-Type" content="text/html;charset=UTF-8"/>

        <title>
            测试JSONP回调函数
        </title>
    </head>
    <body>
        <div id="data">
            <input id="btn" type="button" value="获取数据"/>
            <textarea id="text" style="width: 400px;height: 100px;"></textarea>
        </div>
        <script type="text/javascript">
        //这个是回调函数,data就是回调时的json数据
            function handleResponse(data)
            {
            //将后端的data数据转化为JSON格式
                let result=JSON.stringify(data);
                //然后再转换成对象格式,看你是需要那种格式
                let res=JSON.parse(result);
                console.log(res);
                let text=document.getElementById("text");
                //赋值给textarea
                text.value=result;
            }
            let btn=document.getElementById("btn");
            //按钮事件
            btn.addEventListener('click',function(){
            //创建script元素,实现跨域传递数据必须是script或img元素
                let script=document.createElement('script');
                script.src="http://xuejs.xyz/jsonp.php?callback=handleResponse";
                document.head.appendChild(script);
                
            });
        </script>
    </body>
</html>

//jsonp.php

$arr=array('a'=>'javascript','b'=>'php','c'=>'nodejs');
$result=json_encode($arr);
//."()"点是连接括号形成函数执行的形式,相当于前端的headleResponse($result)被执行
echo $_GET['callback']."($result)";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值