说说JSON和JSONP 也许你会豁然开朗

那我来给您详细讲解一下如何理解JSON和JSONP。

什么是JSON?

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它使用易于人们阅读和编写的文本格式来传输和存储数据。JSON可以使用JavaScript函数eval()进行解析。

JSON格式由键值对构成,最外层是一个大括号({})形成的对象,键值对之间使用逗号(,)进行分隔。键必须是字符串,而值可以是任何JSON类型,包括数组、对象、字符串、数字、布尔值和null。例如:

{
  "name": "张三",
  "age": 22,
  "hobbies": ["篮球", "游泳", "编程"],
  "address": {
    "province": "广东",
    "city": "深圳",
    "district": "宝安"
  },
  "isNull": null,
  "isTrue": true,
  "isFalse": false
}

什么是JSONP?

JSONP(JSON with Padding)是一种使用过时但仍然常用的跨域数据交互方式。它的原理是利用script标签没有跨域限制这一特性,实现从其他域名(网站)获取JSON数据,解决了AJAX不能跨域访问的问题。

使用JSONP需要在页面上引入一个外部的JavaScript文件,该文件通过动态创建script标签,并通过src属性指向API地址,将JSON数据作为参数传递给一个用户定义的回调函数。后端需要对请求做特殊处理,将JSON数据作为函数的参数返回。例如:

<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>JSONP Demo</title>
</head>
<body>
  <script type="text/javascript" src="http://api.example.com/jsonp?callback=handleData"></script>

  <script type="text/javascript">
    function handleData(data) {
      console.log(data);
    }
  </script>
</body>
</html>
// API返回的JSONP格式数据示例
handleData({
  "name": "张三",
  "age": 22,
  "hobbies": ["篮球", "游泳", "编程"],
  "address": {
    "province": "广东",
    "city": "深圳",
    "district": "宝安"
  },
  "isNull": null,
  "isTrue": true,
  "isFalse": false
});

在URL上添加callback参数,该参数的值是一个回调函数的名称,后端将返回数据作为该回调函数的参数进行返回。

示例说明

首先,我们可以使用XMLHttpRequest对象(简称xhr)与服务端进行交互,返回JSON格式的数据。

// 发送AJAX请求,获取JSON数据
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4 && xhr.status === 200) {
    // 解析JSON数据
    var data = JSON.parse(xhr.responseText);
    console.log(data);
  }
};
xhr.open('GET', 'http://api.example.com/data.json');
xhr.send();

接下来,我们可以使用JSONP方式获取与该域名下不同的域名(数据源)的JSON数据。

<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>JSONP Demo</title>
</head>
<body>
  <script type="text/javascript" src="http://api.example.com/jsonp?callback=handleData"></script>

  <script type="text/javascript">
    function handleData(data) {
      console.log(data);
    }
  </script>
</body>
</html>
// API返回的JSONP格式数据示例
handleData({
  "name": "张三",
  "age": 22,
  "hobbies": ["篮球", "游泳", "编程"],
  "address": {
    "province": "广东",
    "city": "深圳",
    "district": "宝安"
  },
  "isNull": null,
  "isTrue": true,
  "isFalse": false
});

以上两个示例可以帮助您更好地理解JSON和JSONP。希望能对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:说说JSON和JSONP 也许你会豁然开朗 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 深入了解JavaScript词法作用域

    深入了解JavaScript词法作用域 什么是词法作用域? 词法作用域指的是变量的作用域是在代码中定义时就确定的,而不是在运行时确定。JavaScript采用的是词法作用域,也就是静态作用域。 当在代码中执行变量引用时,JavaScript引擎会根据词法作用域(也就是代码中定义的位置)来决定该变量的值。 在JavaScript中,变量有两种:全局变量和局部变…

    JavaScript 2023年6月10日
    00
  • 基于JavaScript创建动态Dom

    创建动态 DOM 可以通过多种方式,其中一种方法是使用 JavaScript。下面是基于 JavaScript 创建动态 DOM 的完整攻略,包含两条示例说明。 1. 在 HTML 中创建容器元素 首先,在 HTML 页面中创建一个空的容器元素,该元素的 id 属性可以用于后续操作。例如: <!DOCTYPE html> <html>…

    JavaScript 2023年5月28日
    00
  • Javascript Date setMinutes() 方法

    JavaScript 中的 setMinutes() 方法用于设置日期对象的分钟部分。在本教程中,我们将详细介绍 setMinutes() 方法的使用方法。 setMinutes() 方法基本语法如下: date.setMinutes(minValue, [secValue], [msValue]) 其中,minValue 是设置的分钟值,必须是一个介于 0…

    JavaScript 2023年5月11日
    00
  • 使用JavaScript解析URL的方法示例

    下面我就来详细讲解一下“使用JavaScript解析URL的方法示例”的完整攻略。 什么是URL? 在讲解解析URL的方法之前,我们需要先了解一下什么是URL。URL(Uniform Resource Locator)是指统一资源定位符,简单来说就是我们用来表示资源在网络上位置的方法。URL包含了一些组成部分,例如:协议、域名、端口号、路径、查询参数等等。 …

    JavaScript 2023年5月27日
    00
  • 关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法

    JSON 是一种非常常用的数据格式,它被广泛应用于前后端数据的传输和存储。在 JavaScript 中,我们可以通过以下三种方法来处理 JSON 数据: JSON.parse(): 将 JSON 字符串解析为 JavaScript 对象。 JSON.stringify(): 将 JavaScript 对象序列化为 JSON 字符串。 $.parseJSON(…

    JavaScript 2023年5月27日
    00
  • JavaScript实现网页带动画返回顶部的方法详解

    JavaScript实现网页带动画返回顶部的方法详解 当我们浏览很长的网页时,我们会发现有时候需要快速回到页面的顶部。通常,我们可以直接点击页面的滚动条或者键盘的 Home 键,但这种方式比较突兀。另外,很多时候我们需要一个能够流畅返回顶部的效果。在这里,我们将详细讲解使用JavaScript实现网页带动画返回顶部的方法。 实现步骤 实现网页带动画返回顶部的…

    JavaScript 2023年6月11日
    00
  • JavaScript输出斐波那契数列的实现方法

    下面是详细的讲解“JavaScript输出斐波那契数列的实现方法”的完整攻略。 什么是斐波那契数列 斐波那契数列是指:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以递归的方式定义:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>=2,n∈N*>)。 实现方法 方法一:递归实现 递归实现斐波那契数列非常…

    JavaScript 2023年5月28日
    00
  • JS实战例子之实现自动打字机动效

    下面是JS实战例子之实现自动打字机动效的完整攻略。 简介 实现自动打字机动效的核心是要让文字逐字逐句显示。这个效果可以通过JS动态改变文字的内容和样式来实现。主要步骤包括: 编写html和css样式; 在JS中获取要显示的文字并逐字逐句显示。 下面我们详细讲解这两个步骤。 编写html和css样式 首先,在html中放置一段要显示的文字,例如: <p …

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部