什么是jsonp?

具体的定义自己去google

jsonp 其实就是动态生成js, 用标签的src属性加载到本地执行

上代码

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>
    <h1 id="title">标题</h1>
    <p id="body">内容</p>
    <input type="button" value="更改" onclick="addScript()" />

    <script type="text/javascript">
        function $(id)
        {
            return document.getElementById(id);
        }
        function ChangeContent(object)
        {
            
            $('title').innerHTML = object.title;
            $('body').innerHTML = object.body;
        }

        function addScript()
        {
            var newScript = document.createElement('script');
            newScript.src = 'index.php?callback=ChangeContent';
            document.body.appendChild(newScript);
        }
    </script>

</body>
</html>

index.php

<?php 

sleep(1);  //这一行只是为了有些延迟效果, 可有可无
echo sprintf($_GET['callback'] . "(" . json_encode([
        'title' => '测试',
        'body' => '这是内容'
    ]). ")");

如上所示, 其实就是在服务端用传过来的callback包裹一下代码, 跟json没什么太大关系, 跟ajax更是半毛钱没有, jquery把jsonp放在$.ajax中纯属误导人

没错,就是这么简单

posted @ 2016-04-26 11:50  qong  阅读(69)  评论(0)    收藏  举报