ajax實現跨域請求程式碼例項簡單介紹
其實ajax是不具有跨域功能,這裡說的ajax是jquery封裝後的ajax。
關於原生的ajax相關內容可以參閱ajax教程版本。
實現的原理也是依靠jsonp,關於它的實現原理可以參閱JSONP用法詳解一章節。
關於非跨域的使用可以參閱jquery使用ajax讀取後臺資料在表格中顯示一章節。
上一個例子如果使用本站的編輯器執行,當然非跨域使用,但是如果在本地測試,那麼就是跨域,肯定會首先。
截圖如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" gb2312"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script type="text/javascript"> $(document).ready(function () { $("#bt").click(function () { var str = "<table>"; $.ajax({ url: "http://softwhy.com/demo/ajax/net/jsonp.ashx", data: {}, type: "get", async: true, dataType: "jsonp", jsonp: "jsoncallback", jsonpCallback: "success_jsonpCallback", success: function (json) { $.each(json, function (index, obj) { $.each(obj, function (y, data) { str = str + "<tr>"; str = str + "<td>" + data["username"] + "</td><td>" + data["address"] + "</td><td>" + data["score"] + "</td>"; str = str + "</tr>"; }) }) str = str + "</tr></table>"; $("#antzone").html(str); } }); }) }) </script> </head> <body> <div id="antzone"></div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
特別說明:在www.softwhy.com和softwhy.com之間相互訪問也屬於跨域,所以上面的程式碼也屬於跨域操作。
下面對上面的程式碼的主要部分進行以下說明:
(1).url: "http://softwhy.com/demo/ajax/net/jsonp.ashx",請求的地址。
(2).data: {},要發動到伺服器的資料。
(3).type: "get",規定請求方式。
(4).async: true,非同步請求。
(5).dataType: "jsonp",規定是jsonp跨域請求。
(6).jsonp: "jsoncallback",會作為url的一個引數進行傳遞,softwhy.com?jsoncallback=xxx。
(7).jsonpCallback: "success_jsonpCallback",規定jsoncallback的引數值,softwhy.com?jsoncallback=success_jsonpCallback。
(8).success: function (json),jons是json格式物件。
上面的程式碼實現了跨域,大家好像沒有看到jsonp和jsonpCallback的作用,程式碼修改如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" gb2312"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script type="text/javascript"> function success_jsonpCallback(obj) { console.log(obj); } $(document).ready(function () { $("#bt").click(function () { var str = "<table>"; $.ajax({ url: "http://softwhy.com/demo/ajax/net/jsonp.ashx", data: {}, type: "get", async: true, dataType: "jsonp", jsonp: "jsoncallback", jsonpCallback: "success_jsonpCallback", success: function (json) { $.each(json, function (index, obj) { $.each(obj, function (y, data) { str = str + "<tr>"; str = str + "<td>" + data["username"] + "</td><td>" + data["address"] + "</td><td>" + data["score"] + "</td>"; str = str + "</tr>"; }) }) str = str + "</tr></table>"; $("#antzone").html(str); } }); }) }) </script> </head> <body> <div id="antzone"></div> <input type="button" id="bt" value="檢視效果"/> </body> </html>
上面的程式碼我們只是在javascript程式碼的頂部新增如下一段:
[JavaScript] 純文字檢視 複製程式碼function success_jsonpCallback(obj) { console.log(obj); }
控制檯資料結果是:
這說明softwhy.com?jsoncallback=success_jsonpCallback傳遞到後臺以後,經過包裝又傳送到客戶端。
後臺程式碼確實如此:
[C#] 純文字檢視 複製程式碼public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string callback = context.Request.QueryString["jsoncallback"]; DataSet ds = done(); string jsonStr = GetJsonByDataset(ds); context.Response.Write(callback+"("+jsonStr+")"); }
特別說明:還是要首先看懂jsonp的實現原理,才能夠真正明白上面這一切。
相關文章
- Ajax+SpringMVC實現跨域請求SpringMVC跨域
- 簡單的實現jsonp跨域請求JSON跨域
- 巧用javascript ajax,實現跨域請求外帶,增大漏洞危害JavaScript跨域
- ajax跨域請求之CORS的使用跨域CORS
- 簡單介紹正規表示式拆分url例項程式碼
- ajax簡單介紹
- 簡單介紹shell中的curl網路請求的實現
- Ajax 跨域請求 Access to XMLHttpRequest 解決方案跨域XMLHTTP
- 第72篇 跨域的簡單介紹跨域
- html實現簡單ListViews效果的例項程式碼HTMLView
- AJAX 跨域請求解跨域
- Python全棧Web(AjaxJQuery-AJAX跨域請求)Python全棧WebjQuery跨域
- js ajax請求封裝及解決node請求跨域問題JS封裝跨域
- 跨域請求跨域
- Koa2框架利用CORS完成跨域ajax請求框架CORS跨域
- 跨域請求之jQuery的ajax jsonp的使用解惑跨域jQueryJSON
- springboot系列文章之實現跨域請求(CORS)Spring Boot跨域CORS
- KKB : Jquery實現Ajax請求jQuery
- CSRF(跨站請求偽造)簡介
- vue跨域請求Vue跨域
- CORS跨域請求CORS跨域
- Python實現簡單網頁圖片抓取完整程式碼例項Python網頁
- OutputStreamWriter介紹&程式碼實現和InputStreamReader介紹&程式碼實現
- 人臉識別的簡要介紹(附例項、Python程式碼)Python
- 輕量級網站建設jsonp跨域簡單例項網站JSON跨域單例
- 利用fetch方法實現Ajax請求
- 允許跨域請求跨域
- vue axios 請求跨域VueiOS跨域
- CORS方式實現ajax跨域 — nginx配置CORS跨域Nginx
- jQuery Ajax 跨域前端實現登入jQuery跨域前端
- SVG程式碼構成簡單介紹SVG
- 簡單介紹numpy實現RNN原理實現RNN
- 淡入淡出效果簡單程式碼例項
- Vue——介面請求支援跨域Vue跨域
- 同源政策與跨域請求跨域
- Cross-origin 跨域請求ROS跨域
- 跨域請求後端配置跨域後端
- php 支援jsonp跨域請求PHPJSON跨域
- NGINX如何配置跨域請求Nginx跨域