淺談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了。
相關推薦
淺談JSON和JSONP的區別
以前經常把JSON和JSONP搞混淆,最近特意查閱了相關資料終於搞明白兩者關係了,簡單說一下。 JSON JSON是一種基於文字的資料交換格式,用於描述複雜的資料,舉個例子,描述一個學生的資訊可以這樣子寫: var student = { "i
淺談json和jsonp
前言 由於Sencha Touch 2這種開發模式的特性,基本決定了它原生的資料互動行為幾乎只能通過AJAX來實現。 當然了,通過呼叫強大的PhoneGap外掛然後打包,你可以實現100%的Socket通訊和本地資料庫功能,又或者通過HTML5的WebSoc
淺談Hive和HBase區別
但是 hql 應該 hdf 目前 http 返回 最重要的 hadoop基礎 出處: http://www.cnblogs.com/zlslch/p/5659641.html . 兩者分別是什麽? Apache Hive是一個構建在Hadoop基礎設施之上的數
淺談memcache和redis區別
寫到 應對 狀態 rdb lis lte 而在 mage 內存池 memcache和redis區別 memcach簡介 Memcache時一個內存對象緩存系統,用於加速動態web應用程序,減輕數據庫負載。它可以應對任意多個連接,使用非阻塞的網絡I/O,工作機制:在內存中開辟
淺談Python2和Python3區別
1.首先編碼; Python2 : (1).預設編碼是ASCII碼型別,如果發現其他編碼非ASCII編碼是通常會報錯 UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in ran
說說JSON和JSONP區別
前言 由於Sencha Touch 2這種開發模式的特性,基本決定了它原生的資料互動行為幾乎只能通過AJAX來實現。 當然了,通過呼叫強大的PhoneGap外掛然後打包,你可以實現100%的Socket通訊和本地資料庫功能,又或者通過HTML5的WebSocket也可以實現與伺服器的通訊和服務端推功
淺談Mysql和Redis區別
Mysql和Resdis是個經典的問題了,這次來表達一下我對其的理解。 Redis是屬於記憶體資料庫,所有的資料都儲存在記憶體中,所以執行增刪改查等操作執行速度比Mysql相比快速很多,而且支援的資料型別也較全面,支援字串,列表,hash,集合等。但是由於資料是儲存在記憶體
json和jsonp區別
JSON例項:// 描述一個人 var person = { "Name": "Bob", "Age": 32, "Company": "IBM", "Engineer": true } // 獲取這個人的資訊 var personAge = person.Age;
淺談MySQL和mariadb區別
MariaDB是MySQL原始碼的一個分支,在意識到Oracle會對MySQL許可做什麼後分離了出來(MySQL先後被Sun、Oracle收購)。除了作為一個Mysql的“向下替代品”,MariaDB包括的一些新特性使它優於MySQL。 這兩個資料庫究竟有什麼本
淺談getWidth()和getMeasureWidth()區別
一個簡單的例子: 重寫自定義View的onDraw()程式碼: oval.left=getMeasuredWidth()/2-radius; //左邊 oval.top=getMe
淺談TCP和UDP區別
一個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
JSON和JSONP的區別
post 原理 sync 我們 語言 comm number 前後端 .com 什麽是JSON? ,JSON是一種輕量級的數據傳輸格式,被廣泛應用於當前Web應用中。JSON格式數據的編碼和解析基本在所有主流語言中都被實現,所以現在大部分前後端分離的架構都以JSON格式進行
淺談Log4j和Log4j2的區別
淺談Log4j和Log4j2的區別1、配置文件類型 log4j是通過一個.properties的文件作為主配置文件的,而現在的log4j 2則已經棄用了這種方式,采用的是.xml,.json或者.jsn這種方式來做,可能這也是技術發展的一個必然性,畢竟properties文件的可閱讀性真的是有點差。 2、核心
淺談交換機和路由器的區別
網路在我們的生活學習中已經成為了必須的東西,也許 ”世界上最遙遠的距離就是沒網“,而路由器和交換機這兩種聯網的中繼裝置最常見。如下圖左為交換機,右為路由器。那麼到底路由器和交換機有哪些區別呢?他們在網路的組建方面各自扮演什麼樣的角色?下面我們一起走進他們的世界,探尋彼此的區
淺談struts2和spring MVC的區別
一、框架機制 1. spring MVC是通過servlet的方式進行攔截,在第一次請求傳送時初始化,並隨著容器關閉而銷燬。 2. struts2是通過filter(攔截器)的方式進行攔截,在容器初始化時載入。晚於servlet銷燬。 二、攔截機制
淺談ftp和sftp的區別
一,適用場景 我們平時習慣了使用FTP來上傳下載檔案,尤其是很多Linux的環境下,我們一般都會通過第三方的SSH工具連線到Linux的,但是當我們需要傳輸檔案到Linux的伺服器當中,很多人習慣用FTP來傳輸,其實Linux的預設是不提供FTP的,需要你額外安裝FTP伺服器。而且FTP伺服
淺談TCP和UDP的區別
作為運輸層中兩個主要的協議,TCP和UDP都能嚮應用層提供通訊服務,然而它們提供的服務差別還是很大的。 1、 TCP協議是面向連線的。也就是說,應用程式在使用 TCP協議之前,必須先建立起一個 TCP連線,之後才能進行通訊活動。因此,使用 TCP協議通訊就好
淺談 BIO和NIO和AIO 區別
引言 BIO和NIO是兩種不同的網路通訊模型,現如今NIO已經大量應用在Jetty、ZooKeeper、Netty等開源框架中。 一個面向流、一個面向緩衝區 一個是阻塞式的、一個非阻塞 一個沒有io多路複用器、一個有 下面通過一個例子解釋兩者區別: 假設當前服