原理:

  1.创建script标签

  2.src远程地址

  3.返回的数据必须为js格式

1.因为浏览器处于安全原因不允许跨域请求,但是允许跨域倒入js文件,所以需要创建script标签

2.src远程地址,这里的地址代表着接口地址,因为接口提供的数据为js文件格式,里面有对应的function和数据。

3.接口的数据为js格式,浏览器会认为程序在倒入新的js文件,就会允许倒入数据,通过倒入这些数据,可以将这些数据提交给后台处理。

例:获取江西电视台的接口数据

from django.contrib import admin
from django.urls import path
from app01 import views urlpatterns = [
path('admin/', admin.site.urls),
path('req/', views.req),
]

urls.py

from django.shortcuts import render
import requests # Create your views here. def req(request):
response = requests.get('http://weatherapi.market.xiaomi.com/wtr-v2/weather?cityId=101121301')
response.encoding = 'utf-8'
return render(request, 'req.html', {'response':response.text})

views.py

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>request获取的数据</h3>
{{ response }} <h3>js获取结果</h3>
<!--xhr获取数据-->
<input type="button" value="获取数据" onclick="getContent()"> <script src="/static/jquery-1.12.4.js"></script>
<script>
function getContent() {
/* xhr只能做同一域名的http请求,对于不同域名,浏览器禁止跨域请求 */
/*
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=1454376870403');
xhr.onreadystatechange = function () {
alert(xhr.responseText);
};
xhr.send();
*/ /* jsonp通过引入js文件方式获取接口数据。(接口的返回值为相应数据以及需要调用的function名称) */
/*
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);
*/ /* jsonp通过js获取接口数据 */
$.ajax({
url: 'http://www.jxntv.cn/data/jmd-jxtv2.html',
type: 'POST',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'list'
})
} function list(arg) {
console.log(arg)
}
</script>
</body>
</html>

req.html

前端引入接口数据有两种方法,一种是通过dom添加标签的方式,通过<script>标签引入js文件内容,另一种就是通过js的ajax方法,固定格式获取数据。

jsonp的原理及其使用的更多相关文章

  1. jsonp协议原理深度解析

    前言 今天在开发联调的过程中,需要跨域的获取数据,因为使用的jquery,当然使用dataType:'jsonp'就能够很easy的解决了.但是因为当时后端没有支持jsonp来访问,后来他在实现这个功 ...

  2. js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)

    最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家,需要了解的朋友可以参考下 ...

  3. JSONP的原理

    JSONP的原理 JSONP的最基本的原理是:动态添加一个<script>标签,而script标签的src属性是没有跨域的限制的. <script type="text/j ...

  4. JSONP的原理与实现(基于jQuery)

    为什么会有JSONP?因为我们使用AJAX,使用AJAX可能就会遇到跨域的需求,如何解决呢,对,就是JSONP. 这里注意下JSON和JSONP不是一类,虽然他们只是一个字母只差,但是实际差别很大.这 ...

  5. jsonp实现原理

    jquery 封装在 ajax方法 里面的jsonp jsonp跨域的原理       1:使用script 标签发送请求,这个标签支持跨域访问       2:在script 标签里面给服务器端传递 ...

  6. jsonp详细原理之一

    /*script标签是不存在跨域请求的,类似的还有img,background:url,link 你可以想象一下,平时的这些标签都是可以直接引入外部资源的,所以是不存在跨域问题的*/ function ...

  7. jsonp的原理,应用场景,优缺点

    在开发测试中,难免会在不同域下进行跨域操作,出于安全性考虑,浏览器中的同源策略阻止从一个域上加载的脚本获取或者操作 另一个域下的文档属性,这时需要进行跨域的方式进行解决,如:使用jsonp ,ifra ...

  8. 关于javascript跨域及JSONP的原理与应用

    同源策略,它是由Netscape提出的一个著名的安全策略,现在所有的可支持javascript的浏览器都会使用这个策略. 为什么需要同源策略,这里举个例子: 假 设现在没有同源策略,会发生什么事情呢? ...

  9. jsonp的原理和实现

    什么是JSONP? javascript高级程序设计中是这样介绍jsonp的: jsonp是JSON with padding(填充式JSON或参数式JSON )的简写,是应用JSON的一种新方法,在 ...

  10. jsonp 实现原理

      Jsonp原理: 首先在客户端注册一个callback, 然后把callback的名字传给服务器. 此时,服务器先生成 json 数据.然后以 javascript 语法的方式,生成一个funct ...

随机推荐

  1. Unity3D的坑系列:你真想发布WinPhone版吗?

    Unity 4.2加入了支持WinPhone发布,本来是一件令人开心的事情,不过最近听了Unity技术支持的一个事情后就发现,原来发布WinPhone版也是一个坑. 实际上如果你用Unity做小游戏发 ...

  2. 2014.8.8 CAD系统连接

    CDA数据库连接生产库.研发库.临时库对应3个连接名 cad = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = backupserver)(POR ...

  3. Maven+Mybatis+Spring+SpringMVC实现分页查询

    转载:http://www.cnblogs.com/zhangtan/p/5846955.html 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Myba ...

  4. 1&nbsp;任务管理&nbsp;&nbsp;--转载于电子工程世界

    uC/OS-II 中最多可以支持64 个任务,分别对应优先级0-63,其中0 为最高优先级.63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个. uC ...

  5. Java多线程-新特征-信号量Semaphore

    简介信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确.合理的使用公共资源. 概念Semaphore分为单值和多值两种,前者只能 ...

  6. Timer的定义及demo

  7. java基础知识(三)之数组

    声明数组: 语法:数据类型[ ] 数组名://例:int[ ] scores;  或者 数据类型 数组名[ ]://例:int scores[ ];分配空间 语法:数组名 = new 数据类型 [ 数 ...

  8. 读书笔记 Week4 2018-3-29

    读书笔记 Week 4 <我是一只IT小小鸟> 首先不得不说,这周的个人编程任务占据了我绝大多数的精力.,虽然在接触到题目的第一时间就有了大致的思路,但当我真正上手开始编程的时候,却几乎每 ...

  9. Dubbo管理中心部署

    我们在开发时,需要知道注册中心都注册了哪些服务,以便我们开发和测试.我们可以通过部署一个管理中心来实现.其实管理中心就是一个web应用,部署到tomcat即可. 管理端的部署: 1,首先我们要编译源码 ...

  10. Java,猜猜输出是什么?

    看看下面代码的输出是什么: public class MemoeryManager { public static void main(String[] args){ String a="a ...