1. 程式人生 > >淺談JSON和JSONP的區別

淺談JSON和JSONP的區別

以前經常把JSON和JSONP搞混淆,最近特意查閱了相關資料終於搞明白兩者關係了,簡單說一下。

JSON
JSON是一種基於文字的資料交換格式,用於描述複雜的資料,舉個例子,描述一個學生的資訊可以這樣子寫:

var student = {
    "id":"001",
    "name":"張三",
    "sex":"男",
    "age":20
}

console.log(student.id);     //001
console.log(student.name);   //張三

然後就可以通過student.id,student.name這種方式獲取這個學生的學號和姓名。

如果描述多個學生資訊的話也大同小異,可以這樣寫:

var student =[
    {
        "id":"001",
        "name":"張三",
        "sex":"男",
        "age":20
    },
    {
        "id":"002",
        "name":"李四",
        "sex":"女",
        "age":21
    },
    {
        "id":"003",
        "name":"王五",
        "sex":"男",
        "age":19
    }
]

console.log(student[0
].id); //001 console.log(student[1].name); //李四

然後就可以通過student[0].id,student[1].name這種方式獲取這些學生的學號和姓名了。

JSON其實應用得很廣泛,不難理解,但是JSONP就很容易被誤解了, 以為跟JSON一樣,實際上是兩個不同的東西。

JSONP
如果你理解了JSON是一種資料交換格式,那麼JSONP就是一個跨域互動協議,可以理解為,JSONP約定了JSON的這個資料怎樣進行傳遞。

再講詳細點,跨域是指從一個域名去請求另一個域名的資源,我們知道,如果直接用AJAX請求的時候,由於瀏覽器同源策略的存在,很容易產生跨域問題,同源策略是指域名、協議、埠均相同,如果不同則視為跨域請求,跨域請求一律都是不行的。

想要跨域請求資源,除非我們運用js的特性:script標籤中的連結可以訪問跨域的js檔案,於是跨域伺服器可以這樣做,它把客戶端需要的資料動態包裝成js檔案然後提供給客戶端請求。這種資料傳遞方式慢慢就形成了一種傳輸協議,這就是JSONP了。

相關推薦

JSONJSONP區別

以前經常把JSON和JSONP搞混淆,最近特意查閱了相關資料終於搞明白兩者關係了,簡單說一下。 JSON JSON是一種基於文字的資料交換格式,用於描述複雜的資料,舉個例子,描述一個學生的資訊可以這樣子寫: var student = { "i

jsonjsonp

 前言   由於Sencha Touch 2這種開發模式的特性,基本決定了它原生的資料互動行為幾乎只能通過AJAX來實現。   當然了,通過呼叫強大的PhoneGap外掛然後打包,你可以實現100%的Socket通訊和本地資料庫功能,又或者通過HTML5的WebSoc

HiveHBase區別

但是 hql 應該 hdf 目前 http 返回 最重要的 hadoop基礎 出處: http://www.cnblogs.com/zlslch/p/5659641.html . 兩者分別是什麽?   Apache Hive是一個構建在Hadoop基礎設施之上的數

memcacheredis區別

寫到 應對 狀態 rdb lis lte 而在 mage 內存池 memcache和redis區別 memcach簡介 Memcache時一個內存對象緩存系統,用於加速動態web應用程序,減輕數據庫負載。它可以應對任意多個連接,使用非阻塞的網絡I/O,工作機制:在內存中開辟

Python2Python3區別

1.首先編碼;   Python2 :   (1).預設編碼是ASCII碼型別,如果發現其他編碼非ASCII編碼是通常會報錯 UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in ran

說說JSONJSONP區別

前言   由於Sencha Touch 2這種開發模式的特性,基本決定了它原生的資料互動行為幾乎只能通過AJAX來實現。   當然了,通過呼叫強大的PhoneGap外掛然後打包,你可以實現100%的Socket通訊和本地資料庫功能,又或者通過HTML5的WebSocket也可以實現與伺服器的通訊和服務端推功

MysqlRedis區別

Mysql和Resdis是個經典的問題了,這次來表達一下我對其的理解。 Redis是屬於記憶體資料庫,所有的資料都儲存在記憶體中,所以執行增刪改查等操作執行速度比Mysql相比快速很多,而且支援的資料型別也較全面,支援字串,列表,hash,集合等。但是由於資料是儲存在記憶體

jsonjsonp區別

JSON例項:// 描述一個人 var person = { "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true } // 獲取這個人的資訊 var personAge = person.Age;

MySQLmariadb區別

MariaDB是MySQL原始碼的一個分支,在意識到Oracle會對MySQL許可做什麼後分離了出來(MySQL先後被Sun、Oracle收購)。除了作為一個Mysql的“向下替代品”,MariaDB包括的一些新特性使它優於MySQL。        這兩個資料庫究竟有什麼本

getWidth()getMeasureWidth()區別

一個簡單的例子: 重寫自定義View的onDraw()程式碼: oval.left=getMeasuredWidth()/2-radius; //左邊 oval.top=getMe

TCPUDP區別

    一個TCP連線必須要經過三次“對話”才能建立起來,我們來看看這三次對話的簡單過程:主機A向主機B發出連線請求資料包:“我想給你發資料,可以嗎?”,這是第一次對話;主機B向主機A傳送同意連線和要求同步(同步就是兩臺主機一個在傳送,一個在接收,協調工作)的資料包:“可以,你什麼時候發?”,這是第二次對話;

[例證]getWidth()getMeasureWidth()區別

一、一個簡單的例子: 重寫自定義View的onDraw()程式碼: oval.left=getMeasuredWidth()/2-radius; oval.top=getMeasuredHeight()/2 -radius;

mmap()ioremap()的用法與區別

12只 設備 gpa 我們 之間 mmap ioremap shared set 一、mmap()mmap()函數是用來將設備內存線性地址映射到用戶地址空間。(1)首先映射基地址,再通過偏移地址尋址;(2)unsigned char *map_cru_base=(unsig

JSONJSONP區別

post 原理 sync 我們 語言 comm number 前後端 .com 什麽是JSON? ,JSON是一種輕量級的數據傳輸格式,被廣泛應用於當前Web應用中。JSON格式數據的編碼和解析基本在所有主流語言中都被實現,所以現在大部分前後端分離的架構都以JSON格式進行

Log4jLog4j2的區別

淺談Log4j和Log4j2的區別1、配置文件類型 log4j是通過一個.properties的文件作為主配置文件的,而現在的log4j 2則已經棄用了這種方式,采用的是.xml,.json或者.jsn這種方式來做,可能這也是技術發展的一個必然性,畢竟properties文件的可閱讀性真的是有點差。 2、核心

交換機路由器的區別

 網路在我們的生活學習中已經成為了必須的東西,也許 ”世界上最遙遠的距離就是沒網“,而路由器和交換機這兩種聯網的中繼裝置最常見。如下圖左為交換機,右為路由器。那麼到底路由器和交換機有哪些區別呢?他們在網路的組建方面各自扮演什麼樣的角色?下面我們一起走進他們的世界,探尋彼此的區

struts2spring MVC的區別

一、框架機制    1. spring MVC是通過servlet的方式進行攔截,在第一次請求傳送時初始化,並隨著容器關閉而銷燬。     2. struts2是通過filter(攔截器)的方式進行攔截,在容器初始化時載入。晚於servlet銷燬。 二、攔截機制  

ftpsftp的區別

一,適用場景   我們平時習慣了使用FTP來上傳下載檔案,尤其是很多Linux的環境下,我們一般都會通過第三方的SSH工具連線到Linux的,但是當我們需要傳輸檔案到Linux的伺服器當中,很多人習慣用FTP來傳輸,其實Linux的預設是不提供FTP的,需要你額外安裝FTP伺服器。而且FTP伺服

TCPUDP的區別

作為運輸層中兩個主要的協議,TCP和UDP都能嚮應用層提供通訊服務,然而它們提供的服務差別還是很大的。 1、 TCP協議是面向連線的。也就是說,應用程式在使用 TCP協議之前,必須先建立起一個 TCP連線,之後才能進行通訊活動。因此,使用 TCP協議通訊就好

BIONIOAIO 區別

引言 BIO和NIO是兩種不同的網路通訊模型,現如今NIO已經大量應用在Jetty、ZooKeeper、Netty等開源框架中。 一個面向流、一個面向緩衝區 一個是阻塞式的、一個非阻塞 一個沒有io多路複用器、一個有 下面通過一個例子解釋兩者區別: 假設當前服