IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

九、JSONP 基础教程

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

文章永久连接:https://tech.souyunku.com/?p=7582

JSONP (JSON with Padding) 是 JSON 的一种 使用模式,可以让网页从别的网站那获取数据,即跨域读取数据

为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?
这是因为同源策略

同源策略,它是由 Netscape 提出的一个著名的安全策略,现在所有支持 JavaScript 的浏览器都会使用这个策略

接下我们将学习 JSONP 的知识

JSONP 应用

1. 服务端 JSONP 格式数据

假设其它网站想访问 : https://tech.souyunku.com/r/show/penglei/jsonp/python_cnt?jsonp=callbackFunction

假设我们期望返回如下 JSON 数据

{"python":11582}

真正返回到客户端的数据显示为

callbackFunction({"python":11582})

服务端文件 jsonp.php 代码为

jsonp.php

<?php

header('Content-type: application/json;charset="utf-8"');

//获取回调函数名
$jsoncallback = htmlspecialchars( $_REQUEST ['jsonp'] );

// JSON 数据
$json_data = '{"python":11582}';


//输出 JSONP 格式的数据
echo $jsoncallback . "(" . $json_data . ")";

2. 客户端实现 callbackFunction 函数

<script>
function callbackFunction(result,methodName)
{
    var rs = result['data'];
    var html='<ul>';
    for(var i=0; i<rs.length; i++)
    {
        html += '<li>'+rs[i]['lang']+':'+rs[i]['cnt']+'</li>';
    }

    html += '</ul>';
    document.getElementById('divCustomers').innerHTML=html;
}
</script>

页面展示

<div id="divCustomers"></div>

客户端页面完整代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP 范例</title>
</head>
<body>
    <div id="divCustomers"></div>
    <script>
    function callbackFunction(result,methodName)
    {
        var rs = result['data'];
        var html='<ul>';
        for(var i=0; i<rs.length; i++)
        {
            html += '<li>'+rs[i]['lang']+':'+rs[i]['cnt']+'</li>';
        }

        html += '</ul>';
        document.getElementById('divCustomers').innerHTML=html;
    }
    </script>
    <script src="/r/show/penglei/jsonp/python_cnt?jsonp=callbackFunction"></script>
</body>
</html>

运行范例 »

jQuery 使用 JSONP

上面的范例可以使用 jQuery 重写

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JSONP 范例</title>
    <script src="/static/js/jquery-1.8.3.min.js"></script>    
</head>
<body>
<div id="divCustomers"></div>
<script>
$.getJSON("/r/show/penglei/jsonp/python_cnt?jsonp=?",function(result){
        var rs = result['data'];
        var html='<ul>';
        for(var i=0; i<rs.length; i++)
        {
            html += '<li>'+rs[i]['lang']+':'+rs[i]['cnt']+'</li>';
        }

        html += '</ul>';
        $('#divCustomers').html(html);
    }
);
</script>
</body>
</html>

运行范例 »

干货推荐


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(90) 打赏



未经允许不得转载:搜云库技术团队 » 九、JSONP 基础教程

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367