国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

對jsonp的callback的猜測

2024-04-27 15:14:25
字體:
來源:轉載
供稿:網友

jquery jsonp的請求數據:

$.Ajax({		dataType : "JSONP",		jsonp : "callback",//請求自動帶上callback參數,callback值為jsonpCallback的值  		jsonpCallback : "test1",//接口服務器應該返回字符串數據格式:test1(JSON數據)  		type : "POST",		url : "http://www.xiuye.com/josnp.do",//接口服務器地址  		data : {		/* user : "xiuye" */		},//請求數據  		success : function(response) {			//成功執行  			console.log(response);			//alert("jsonp OK");		},		error : function(e) {			//失敗執行  			alert(e.status + ',' + e.statusText);		}	});服務器端傳回的數據實際上是字符串:

test1(json數據)瀏覽器得到 : json數據

這個過程中callback的test1是什么?

test1可能是個函數,函數定義是用eval定義的:

eval("function " + callback + "{...}");注:

callback = "test1"然后test1的函數就定義成功了

==================跨域請求==================

標簽script的src屬性可以請求任何地址.

jsonp:

先動態的定義新的callback函數test1

eval("function test1{...}");

請求數據

<script src="http://www.xiuye.com/josnp.do?callback=test1"></script>server得到callback的參數,返回字符串:

"test1(json數據)"瀏覽器的script得到數據后就執行js代碼:

test1(json數據)這樣json數據就可以通過全局變量或者其他方式拿到手了.

動手實踐:

前端js代碼:

<script type="text/javascript" src="js/jquery-2.1.4.js"></script><script type="text/Javascript">	var a = null;	function test(callback) {		console.log("execute test ...");		window.eval("function " + callback + "(data){a = data;alert('jsonp callback 函數已經執行了!')}");		var s = document.createElement("script");		s.src = "http://www.xiuye.com/josnp.do?callback=" + callback + "&_="				+ Math.random();				document.body.appendChild(s);				console.log(s);	}	$(function(){		test("test1");		console.log("global a = " + a);	});</script>服務器java代碼返回json數據(用了jsonp框架才出現下面的樣子,直接返回數據):
public String test1(){		return "{msg : 'json no parameter'}";	}結果:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿荣旗| 杭州市| 柘荣县| 江安县| 宜宾县| 玉环县| 丰原市| 祥云县| 章丘市| 禄丰县| 江北区| 泰兴市| 宾川县| 容城县| 抚松县| 綦江县| 阿勒泰市| 工布江达县| 五河县| 绥德县| 彩票| 中江县| 扎兰屯市| 寿阳县| 青海省| 虎林市| 车致| 广德县| 韩城市| 车险| 西充县| 合水县| 邵阳县| 泰宁县| 稷山县| 青浦区| 名山县| 海原县| 安西县| 峨眉山市| 津南区|