jsonp跨域請求實現(xiàn)示例
網(wǎng)上看了很多關于jsonp的資料,發(fā)現(xiàn)在本機運行后實現(xiàn)不了,有的是有錯漏,有的是說的比較含糊,接合自己的情況,整了一個可運行的示例;
前言:
ajax請求地址:http://192.168.1.102:8080/carop/jsonp
服務端要返回的jsonp字符串:jsonpCallback({"name":"劉德華","電話":"17688888888"})
jsonp寫法,寫法上可以理解成一個javascript函數(shù)的執(zhí)行,例如alert("hello world")會彈出hello world的窗口,再例如alert({"name":"劉德華"})會彈出[object Object]的窗口。(注意這里參數(shù)兩端沒加雙引號,它是一個有屬性的對象而不是一個字符串)
那么本示例的jsonp中,可以將jsonpCallback理解成函數(shù)名,{"name":"劉德華","電話":"17688888888"}這個對象是這個函數(shù)執(zhí)行時所要傳遞的參數(shù)。
客戶端:
$.ajax({ type: "get", async:false, url: "http://192.168.1.102:8080/carop/jsonp", dataType: "jsonp", jsonpCallback:"jsonpCallback", success: function(data){ alert(data.name+"\n "+data.tel); } });
其他的ajax方法比如getjson亦可,寫法上有區(qū)別,這里僅采用一種方法。
說明:jsonpCallback:"jsonpCallback",前一個ajax參數(shù)表示要執(zhí)行的函數(shù),后面的”jsonpCallback“,這個是服務器返回jsonp的javascript函數(shù)名。(網(wǎng)上有相關資料這個參數(shù)寫的是jsonp而不是jsonpCallback,經(jīng)實際測試要寫成jsonpCallback,jquery版本1.8,所測試瀏覽器為火狐和edge)
服務端
servlet控制器層直接返回jsonp;
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/jsonp") public class jsonp extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setCharacterEncoding("UTF-8"); //System.out.println("進入jsonp"); resp.setContentType("text/json;charset=utf-8"); String json="{\"name\":\"劉德華\",\"tel\":\"17688888888\"}"; String jsonp="jsonpCallback("+json+")"; PrintWriter pw=resp.getWriter(); System.out.println(jsonp); pw.print(jsonp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doGet(req, resp); } }
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
- 實例講解使用原生JavaScript處理AJAX請求的方法
- 原生js jquery ajax請求以及jsonp的調(diào)用方法
- 詳解JavaScript原生封裝ajax請求和Jquery中的ajax請求
- 原生javascript的ajax請求及后臺PHP響應操作示例
- Javascript原生ajax請求代碼實例
- 輕松搞定jQuery+JSONP跨域請求的解決方案
- JavaScript用JSONP跨域請求數(shù)據(jù)實例詳解
- Ajax jsonp跨域請求實現(xiàn)方法
- JSONP跨域請求實例詳解
- 詳細解密jsonp跨域請求
- JSONP跨域請求
- 原生js實現(xiàn)ajax請求和JSONP跨域請求操作示例
相關文章
JavaScript中clientWidth,offsetWidth,scrollWidth的區(qū)別
這篇文章主要介紹了Element中clientWidth,offsetWidth,scrollWidth的區(qū)別,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下2021-01-01JavaScript數(shù)據(jù)結(jié)構與算法之二叉樹實現(xiàn)查找最小值、最大值、給定值算法示例
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構與算法之二叉樹實現(xiàn)查找最小值、最大值、給定值算法,涉及javascript二叉樹定義、賦值、遍歷、查找等相關操作技巧,需要的朋友可以參考下2019-03-03webpack構建打包的性能優(yōu)化實戰(zhàn)指南
webpack是前端開發(fā)中比較常用的打包工具之一,另外還有gulp,grunt,下面這篇文章主要給大家介紹了關于webpack構建打包的性能優(yōu)化的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-03-03AJAX XMLHttpRequest對象創(chuàng)建使用詳解
這篇文章主要介紹了AJAX XMLHttpRequest對象創(chuàng)建使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08深入理解setTimeout函數(shù)和setInterval函數(shù)
下面小編就為大家?guī)硪黄钊肜斫鈙etTimeout函數(shù)和setInterval函數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05