本文整理了一下平時工作中碰到的數據跨域請求問題,有需要的朋友可以看下
受js同源策略的影響,不同域名間的請求或者同一域名,不同端口的url時,就會變成不被允許的跨域請求問題。
這時該怎麼辦,小菜我做了如下的一些整理。
一、jsonp
也就是將請求的url寫入到script標籤中,寫法可分爲直接寫死和動態載入。
1.通過script標籤引入,直接寫死src中的url地址:
<script type="text/javascript">
function callback(data) {
console.log(data);
}
</script>
<script src="http://www.example.com.cn/product.jsp?id=5&jsonp=callback"></script>
這裏我定義一個callback的函數,然後用script標籤的src屬性跨域請求數據,那麼,product.jsp的內容經過約定,需要寫成這樣:
callback({"id": "3", "name": "leisure"});
調用方法:
2.動態加載script標籤:
<script>
var callback = function(data) {
console.log(data);
};
var script = document.createElement('script'),
body = document.getElementsByTagName('body');
script.src = 'http://www.example.com.cn/product.jsp?id=5&jsonp=callback';
body[0].appendChild(script);
</script>
二、ajax
<script src="js/jquery-1.11.3.js"></script> <script> $(function(){ $.ajax({ async: false, type: "GET", dataType: 'jsonp', jsonp: 'callback', jsonpCallback: 'callbackfunction', url: "http://i2.mediapower.mobi/adpower/vm/Bora/js/test.js", data: "", timeout: 3000, contentType: "application/json;utf-8", success: function(msg) { console.log(msg); } }); }) </script>
三.chrome瀏覽器
如果使用的是chrome瀏覽器,那就方便很多,只需修改下瀏覽器的參數即可。
以上就是爲大家分享的3種常用的js跨域請求數據的方法,希望對大家的學習有所幫助。