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跨域請求簡單介紹跨域
- ajax實現的跨域請求程式碼例項跨域
- $.getJSON()實現跨域請求程式碼例項JSON跨域
- PHP AJAX JSONP實現跨域請求使用例項PHPJSON跨域
- 使用CORS實現ajax跨域簡單介紹CORS跨域
- 利用JQuery實現更簡單的Ajax跨域請求jQuery跨域
- Ajax+SpringMVC實現跨域請求SpringMVC跨域
- ajax跨域post請求,如何實現呢跨域
- 簡單的實現jsonp跨域請求JSON跨域
- jQuery ajax請求程式碼例項分享jQuery
- jquery ajax 跨域請求jQuery跨域
- ajax載入xml檔案內容程式碼例項簡單介紹XML
- 實現跨域iframe介面方法呼叫 簡單介紹跨域
- jQuery實現的生成隨機密碼程式碼例項簡單介紹jQuery隨機密碼
- node.js [superAgent]請求簡單程式碼例項Node.js
- 巧用javascript ajax,實現跨域請求外帶,增大漏洞危害JavaScript跨域
- js便籤筆記(13)——jsonp其實很簡單【ajax跨域請求】筆記JSON跨域
- ajax跨域請求之CORS的使用跨域CORS
- jQuery實現的非同步請求程式碼例項jQuery非同步
- ajax請求且帶返回值的程式碼例項
- 跨域ajax請求,伺服器會收到請求嗎?跨域伺服器
- javascript作用域簡單例項程式碼JavaScript單例
- jQuery實現的簡單投票簡單程式碼例項jQuery
- Ajax 跨域請求 Access to XMLHttpRequest 解決方案跨域XMLHTTP
- 簡單介紹shell中的curl網路請求的實現
- $.ajax()用法例項程式碼介紹
- 簡單介紹正規表示式拆分url例項程式碼
- AngularJs解決跨域簡單介紹AngularJS跨域
- ajax請求完畢之前顯示正在載入程式碼例項
- AJAX 跨域請求解跨域
- 跨域請求跨域
- js ajax請求封裝及解決node請求跨域問題JS封裝跨域
- AJAX 跨源 HTTP 請求HTTP
- html實現簡單ListViews效果的例項程式碼HTMLView
- javascript實現的動畫效果簡單例項程式碼JavaScript動畫單例
- Koa2框架利用CORS完成跨域ajax請求框架CORS跨域
- Python全棧Web(AjaxJQuery-AJAX跨域請求)Python全棧WebjQuery跨域
- AJAX(XMLHttpRequest)進行跨域請求方法詳解(一)XMLHTTP跨域