首先需要建立两个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个小时,才算弄出点门道,啊啊啊,好累啊