Ajax不能跨域,比如您是www.baidu.com,您就不能請求www.163.com的文件。但您可以請求www.baidu.com/1.json、ent.baidu.com/1.json。這是因為安全原因,對于任何后臺語言來說、服務器程序來說,所有的XHR類型的請求,如果來自其他的服務器,將不予應答。
一、使用jsonp
JSONP是JSON with Padding的略稱。它是一個非官方的協議,出處不可考,它允許在服務器端集成Script tags返回至客戶端,通過javascript callback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。--來源百度
JSONP就像是JSON+Padding一樣(Padding這里我們理解為調用函數時的填充)。
綠色部分是JSON,外面的fun();是函數的調用,是padding補充部分。
jsonp的原理很簡單,就是把定義寫在了HTML源文件里面,而將調用放在script標簽引用的文件里面,由于script標簽可以跨文件使用,這樣就實現了跨域,引用的文件可以有各種格式php 、js、txt等。
下面舉個例子:
jsonp.txt里面的內容如下:
//調用函數fun({ "result" : [ { "name" : "小明", "age" : 12, "sex" : "男" }, { "name" : "小紅", "age" : 13, "sex" : "女" }, { "name" : "小綠", "age" : 16, "sex" : "女" } ]});
運行結果:
由于這樣使用起來不方便,我們可以將它封裝成一個實用輪子:
jQuery已經有封裝好的API可以直接使用:名稱是ajax()
可以查看jQuery手冊,參考如下
二、使用PHP偷數據
幾乎每種后臺語言都可以實現該功能,以下是PHP的示例:
<?php header("Content-Type:text/html;charset=utf-8"); $a = file_get_contents("網址"); print_r($a);?>
其中,header是設置返回到瀏覽器中的頭文件的字符集和文件類型
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答