国产探花免费观看_亚洲丰满少妇自慰呻吟_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'}";	}結果:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 茶陵县| 长葛市| 长泰县| 浦东新区| 温泉县| 册亨县| 孝义市| 菏泽市| 南充市| 顺平县| 乌兰察布市| 泰安市| 上饶县| 融水| 巴里| 柘城县| 本溪市| 卓资县| 徐汇区| 星子县| 康马县| 瑞金市| 信宜市| 临夏市| 绥滨县| 海南省| 尼玛县| 金平| 大化| 鹤庆县| 赤水市| 晋城| 望都县| 阜新| 永胜县| 长丰县| 区。| 玛曲县| 襄汾县| 浙江省| 鄂尔多斯市|