跨域請求是實現網頁間數據交互的一種方式,但由于瀏覽器的安全機制,普通的Ajax請求不能跨越不同域名下的數據。jQuery提供了一種簡單易用的方法來跨域請求數據:
$.ajax({ type:"POST", url:"http://example.com/getdata", data:{username:"johndoe", password:"password"}, dataType:"json", success:function(data){ console.log(data); }, error:function(xhr,status,error){ console.log("Error: "+status+" "+error); } });
其中,type指定請求類型,可以選擇"GET"或"POST",url指定請求地址,data指定請求參數,dataType指定響應數據類型,可以選擇"json"、"xml"或"html"。success函數和error函數分別處理成功和失敗的響應。
可以發現,在請求地址中包含了不同域名的地址,這就是跨域請求。但在實際應用中,很多時候我們并不知道請求地址的域名是什么,我們可以通過跨域代理服務器來解決這個問題。
$.ajax({ type:"POST", url:"http://localhost:8080/proxy", data:{url:"http://example.com/getdata",params:{username:"johndoe", password:"password"}}, dataType:"json", success:function(data){ console.log(data); }, error:function(xhr,status,error){ console.log("Error: "+status+" "+error); } });
這里我們通過向代理服務器發送請求,代理服務器再代我們向目標服務器發送請求,從而實現跨域請求。在代理服務器中,我們需要進行跨域請求的參數組合成get或post形式的請求,然后將直接響應給本地的請求。