首先需要建立两个Django项目,我这里用的两个项目名字分别为untitled2和untitled

在第一个项目里面的文件如下:

// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

html文件:

==>html文件中的html代码

<!--以下内容直接放在body文件即可>
<div id="content">名字:</div>
<div id="container"></div>
<input type="button" value="发送1-->本地请求" onclick="submitJsonp1();"/>
<input type="button" value="发送2-->远程请求" onclick="submitJsonp2();"/>
<input type="button" value="发送3-->实例演示" onclick="submitJsonp3();"/>
<input type="button" value="发送4-->JQuery" onclick="submitJsonp4();"/>

==>html文件中的JS代码及导入的JS

<!--需要导入的文件:
      第一个文件自己下载,第二个文件内容是自己定义的
     需要执行一个func函数,针对手动写的回调函数用
-->
<script src="/static/jquery-3.1.1.js"></script>
<script src="/static/commons.js"></script>

<!-- commons.js内容 -->
func();

<script>
    // //////////////////////////////////////////////////////////////////
    function submitJsonp1() {
        $.ajax({
            url: '{% url 'main9' %}',
            type: 'GET',
            data: {name: 'apollo'},
            success: function (arg) {
                // 选中标签赋值
                var name = arg['name'];
                $('#content').html(name);
            }
        })
    }


    // //////////////////////////////////////////////////////////////////

    function submitJsonp2() {
        var tag = document.createElement('script');
        tag.src = 'http://127.0.0.1:9999/apollo/';
        // 发送请求,相当于在head标签内加:r'<script src="http://127.0.0.1:9999/apollo/"><script>'
        document.head.appendChild(tag);
        document.head.removeChild(tag);
    }

    function func(arg) {
        // jq赋值操作
        $('#content').html(arg);
    }

    // //////////////////////////////////////////////////////////////////

    function submitJsonp3() {
        var tag = document.createElement('script');
        tag.src = 'http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=1454376870403';
        document.head.appendChild(tag);
        document.head.removeChild(tag);
    }

    function list(arg) {
        $('#content').html(arg)
    }

    // //////////////////////////////////////////////////////////////////
    function submitJsonp4() {
        $.ajax({
       //注意看url地址,这里是apollo1不是apollo,写错了就看不到这个例子的真正意义,回调函数能不能自定义,要看被请求方的设置 url:
'http://127.0.0.1:9999/apollo1/', // JSONP默认是GET,即使写POST也没用,因为本质就是GET type: 'GET', dataType: 'jsonp', jsonp: 'callback', jsonpCallback: 'list', //自定义回调函数的名字,如果数据是JSON字符串,按照下方处理 success: function (data) { $.each(data.data, function (i) { var item = data.data[i]; var str = "<p>" + item.week + "</p>"; $('#container').append(str); $.each(item.list, function (j) { console.log(j); var temp = "<a href='" + item.list[j].link + "'>" + item.list[j].name + " </a><br/>"; $('#container').append(temp); }); $('#container').append("<hr/>"); }) } }) } </script>

urls.py文件路由设置

    re_path('main9/', views.main9, name='main9'),
    re_path('index9/', views.index9, name='index9'),

# 此段代码针对本地请求有效,其他无效

 

views.py视图函数

def index9(request):
    print(request.POST)
    return render(request, 'index9.html')

from django.http import JsonResponse
def main9(request):
    ret = {}
    print(request.GET.get('name'))
    name = request.GET.get('name')
    ret['name'] = name
    return JsonResponse(ret)

# 此段代码仅对本地请求起作用,其他无效

 

 

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

下面是untitled2项目中涉及到的代码

html文件:(这个里面的内容不重要,主要是让django跑起来)

<body>
这里是untitle2的内容页面...........
</body>

urls.py文件内容:

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('apollo/', views.apollo, name='apollo')
]

 

views.py文件内容:

def apollo(request):
    return HttpResponse('func("你好,我是untitle2的执行结果");')

def apollo1(request):
    name = request.GET.get('callable')
    return HttpResponse('%s("这里是被访问网址返回内容");'%(name,))

#回调函数这里可以写死了,但是建议用上面比较灵活的,
#如果写死了,就像下面这样,那么调用者就必须用list才可以调用
def apollo1(request):
    return HttpResponse('list("这里是被访问网址返回内容");')

 

就到这里吧!这趟了2-3个小时,才算弄出点门道,啊啊啊,好累啊

 

下面接