兩種簡單的跨域方法(jsonp、php)
Ajax不能跨域,比如您是www.baidu.com,您就不能請求www.163.com的文件。但您可以請求www.baidu.com/1.json、ent.baidu.com/1.json。這是因為安全原因,對于任何后臺語言來說、服務(wù)器程序來說,所有的XHR類型的請求,如果來自其他的服務(wù)器,將不予應(yīng)答。
一、使用jsonp
JSONP是JSON with Padding的略稱。它是一個非官方的協(xié)議,出處不可考,它允許在服務(wù)器端集成Script tags返回至客戶端,通過javascript callback的形式實現(xiàn)跨域訪問(這僅僅是JSONP簡單的實現(xiàn)形式)。--來源百度
JSONP就像是JSON+Padding一樣(Padding這里我們理解為調(diào)用函數(shù)時的填充)。

綠色部分是JSON,外面的fun();是函數(shù)的調(diào)用,是padding補(bǔ)充部分。
jsonp的原理很簡單,就是把定義寫在了HTML源文件里面,而將調(diào)用放在script標(biāo)簽引用的文件里面,由于script標(biāo)簽可以跨文件使用,這樣就實現(xiàn)了跨域,引用的文件可以有各種格式php 、js、txt等。
下面舉個例子:

jsonp.txt里面的內(nèi)容如下:
//調(diào)用函數(shù)
fun({
"result" : [
{
"name" : "小明",
"age" : 12,
"sex" : "男"
},
{
"name" : "小紅",
"age" : 13,
"sex" : "女"
},
{
"name" : "小綠",
"age" : 16,
"sex" : "女"
}
]
});
運行結(jié)果:

由于這樣使用起來不方便,我們可以將它封裝成一個實用輪子:

jQuery已經(jīng)有封裝好的API可以直接使用:名稱是ajax()
可以查看jQuery手冊,參考如下

二、使用PHP偷數(shù)據(jù)
幾乎每種后臺語言都可以實現(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序?qū)崿F(xiàn)導(dǎo)航欄選項卡效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)導(dǎo)航欄選項卡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02
JavaScript中Cookie的使用之如何設(shè)置失效時間
這篇文章主要介紹了JavaScript中Cookie的使用之如何設(shè)置失效時間問題,具有很好的參考價值,希望對大家有所幫助。2022-12-12
詳解將微信小程序接口Promise化并使用async函數(shù)
這篇文章主要介紹了詳解將微信小程序接口Promise化并使用async函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

