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

首頁 > 開發 > AJAX > 正文

詳解Ajax跨域(jsonp) 調用JAVA后臺

2024-09-01 08:30:44
字體:
來源:轉載
供稿:網友

1. JSONP定義

JSONP是英文JSON with Padding的縮寫,是一個非官方的協議。它允許在服務器端生成script tags返回至客戶端,通過javascript callback的形式來實現站點訪問。 JSONP是一種script tag的注入,將server返回的response添加到頁面實現特定功能。

2.JSONP由來

要解釋JSONP的來由,先要說一下瀏覽器的“同源策略(SOP:Same Origin Policy)”。 簡而言之,就是瀏覽器限制腳本程序只能和同協議、同域名、同端口的腳本進行交互,這包括共享和傳遞變量等。cookie的傳遞也是遵從同樣策略。這就造成一些涉及到多個服務器的應用在整合時一些麻煩。跨域訪問的問題造成A站點的Ajax代碼無法訪問B站點的數據。

如何解決跨域訪問呢?那就要借助瀏覽器的一個特性:盡管瀏覽器不允許頁面中的腳本程序跨域讀取數據,但卻允許HTML引用跨域的資源,如圖片,CSS和腳本程序。對于腳本程序的引用比較特殊,它被瀏覽器解析以后,就和本地的腳本程序別無二致且可立即進行解釋并執行。如在B站點的一個js文件,一個簡單的提示框:alert(“This is Victor!”);。在A站點引用這個js,這個腳本就會在B站點的應用中執行,顯示一個alert信息。由于站外腳本的引用是通過script tag來實現的,而腳本程序又可通過DOM的方式可以對HTML頁面的所有標簽進行控制(包括動態的創建script標簽),這就可以實現通過調用站外程序對本地資源進行更改了。另外,通過<script> 標記的使用,就可從服務端直接返回可執行的JavaScript函數調用或者JSON數據。

3. JSONP原理與實現

首先在客戶端注冊一個callback, 然后把callback的名字傳給服務器。此時,服務器先生成 JSON數據。然后以JavaScript 語法的方式,生成一個function, function名字就是傳遞上來的參數jsonp. 

然后,將JSON數據直接以入參的方式,放置到function中,這樣就生成了一段 js 語法的文檔,返回給客戶端。

最后,在客戶端瀏覽器中解析script標簽,并執行返回的JavaScript文檔,此時數據作為參數,傳入到了客戶端預先定義好的回調函數里(動態執行回調函數) 。

具體代碼操作:

1,js代碼

$.ajax({  url: 'http://192.168.3.49:8080/PORTAL/authCode',  type: 'post',  dataType:'jsonp',  jsonp: "callback",  data: {    "type":'0',    "mobilePhone": $("#tel").val()  },  success:function(data){    alert(data.ret)    settime(obj);  },  error:function(data){    $('#mstr_ck').html("獲取驗證碼失敗,請重試!");    $("#error_ck").show();  }}); 

2,java代碼  

@RequestMapping(value = "authCode")@ResponseBodypublic String getMobileAuthCode( HttpServletRequest request, String callback)    throws Exception {  String result = "{'ret':'true'}";  //加上返回參數  result=callback+"("+result+")";  return result;} 

如上:前端調用結果彈出:alert('true')  

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德惠市| 嘉善县| 河曲县| 育儿| 阳信县| 大宁县| 深水埗区| 栾城县| 牙克石市| 西乌珠穆沁旗| 霸州市| 神木县| 海晏县| 武冈市| 普格县| 辽中县| 崇礼县| 临朐县| 新源县| 法库县| 孟村| 剑阁县| 武冈市| 蛟河市| 罗平县| 仁寿县| 临洮县| 遵义市| 莱州市| 惠东县| 共和县| 南江县| 遂昌县| 襄汾县| 寿宁县| 揭西县| 罗平县| 柯坪县| 嘉义县| 遂川县| 邮箱|