兩種簡單的跨域方法(jsonp、php)
Ajax不能跨域,比如您是www.baidu.com,您就不能請(qǐng)求www.163.com的文件。但您可以請(qǐng)求www.baidu.com/1.json、ent.baidu.com/1.json。這是因?yàn)榘踩?,?duì)于任何后臺(tái)語言來說、服務(wù)器程序來說,所有的XHR類型的請(qǐng)求,如果來自其他的服務(wù)器,將不予應(yīng)答。
一、使用jsonp
JSONP是JSON with Padding的略稱。它是一個(gè)非官方的協(xié)議,出處不可考,它允許在服務(wù)器端集成Script tags返回至客戶端,通過javascript callback的形式實(shí)現(xiàn)跨域訪問(這僅僅是JSONP簡單的實(shí)現(xiàn)形式)。--來源百度
JSONP就像是JSON+Padding一樣(Padding這里我們理解為調(diào)用函數(shù)時(shí)的填充)。
綠色部分是JSON,外面的fun();是函數(shù)的調(diào)用,是padding補(bǔ)充部分。
jsonp的原理很簡單,就是把定義寫在了HTML源文件里面,而將調(diào)用放在script標(biāo)簽引用的文件里面,由于script標(biāo)簽可以跨文件使用,這樣就實(shí)現(xiàn)了跨域,引用的文件可以有各種格式php 、js、txt等。
下面舉個(gè)例子:
jsonp.txt里面的內(nèi)容如下:
//調(diào)用函數(shù) fun({ "result" : [ { "name" : "小明", "age" : 12, "sex" : "男" }, { "name" : "小紅", "age" : 13, "sex" : "女" }, { "name" : "小綠", "age" : 16, "sex" : "女" } ] });
運(yùn)行結(jié)果:
由于這樣使用起來不方便,我們可以將它封裝成一個(gè)實(shí)用輪子:
jQuery已經(jīng)有封裝好的API可以直接使用:名稱是ajax()
可以查看jQuery手冊(cè),參考如下
二、使用PHP偷數(shù)據(jù)
幾乎每種后臺(tái)語言都可以實(shí)現(xiàn)該功能,以下是PHP的示例:
<?php header("Content-Type:text/html;charset=utf-8"); $a = file_get_contents("網(wǎng)址"); print_r($a); ?>
其中,header是設(shè)置返回到瀏覽器中的頭文件的字符集和文件類型
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript算法題 求任意一個(gè)1-9位不重復(fù)的N位數(shù)在該組合中的大小排列序號(hào)
從1--9中選取N個(gè)數(shù)字,組成不重復(fù)的N位數(shù),從小到大進(jìn)行編號(hào),當(dāng)輸入其中任何一個(gè)數(shù)M時(shí),能找出該數(shù)字對(duì)應(yīng)的編號(hào)2012-07-07JavaScript實(shí)現(xiàn)模仿桌面窗口的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)模仿桌面窗口的方法,可實(shí)現(xiàn)模仿桌面窗口的打開、關(guān)閉、移動(dòng)、縮放及最大化、最小化等功能,需要的朋友可以參考下2015-07-07