最簡單的Jsonp實現方式如下:
var Jsonp=document.creatElement("script");
//Firefox:onload IE:onreadystatechange
Jsonp.οnlοad=Jsonp.onreadystatechange=function(){
//onreadystatechange,僅IE
if(!this.readyState||this.readyState==="loaded"||this.readyState==="complete"){
alert($("#demo").html());
Jsonp.οnlοad=Jsonp.onreadystatechange=null; //防止內存泄漏
}
}
Jsonp.type="text/javascript";
Jsonp.src="http://www.***.com/js/jQuery.js";
//在head之後添加js文件
document.getElementsByTagName("head")[0].appendChild(Jsonp);
我們通過創建script,指定它的src等屬性,然後插入head執行。建議onload、onreadystatechange寫在src賦值之前,防止載入javascript太快而沒有給onload、onreadystatechange賦值(image對象在IE下具有此類現象)。
Jsonp實例:
首先我們可以定義一個函數來執行Jsonp返回的數據,然後通過Jsonp的src傳此函數給後臺,進行處理,返回可執行的函數。例如下面的代碼。
function JsonpHandle(a){
alert(a);
}
var Jsonp=document.creatElement("script");
Jsonp.type="text/javascript";
Jsonp.src="http://www.***.com/Jsonp.php?callback=JsonpHandle";
//在head之後添加javascript文件
document.getElementsByTagName("head")[0].appendChild(Jsonp);
後臺Jsonp.php的代碼:
echo $_GET["callback"]."('hello,world')";