本篇文章主要介紹了詳解Ajax跨域(jsonp) 呼叫JAVA後台,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
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<a href="http://www.php.cn/wiki/145.html" target="_blank">函數呼叫或JSON資料。 </script>
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") @ResponseBody public String getMobileAuthCode( HttpServletRequest request, String callback) throws Exception { String result = "{'ret':'true'}"; //加上返回参数 result=callback+"("+result+")"; return result; }
如上:前端呼叫結果彈出:alert('true' )
以上是關於Ajax跨域調用JAVA後台的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具