javascript
jsonp解决ajax跨域问题,用JSONP解决ajax跨域问题
JSONP:JSON With Padding
要點:
1.script標簽
2.用script標簽加載資源是沒有跨域問題的
概要:
在資源加載進來之前先定義一個函數,這個函數接受一個參數(數據),函數里面利用這個參數做一些事情。
然后在需要的時候通過script標簽加載對應遠程文件資源,當遠程的文件資源被加載進來的時候,就會執行我們前面定義好的函數,并且把我們想拿到的數據當做這個函數的參數傳入進去。
小例子:
function fn(data){
alert(data);
}
/*
* 1.txt中的內容:fn([1,2,3]);
* 也就是執行了上面定義的fn函數
* script的src屬性可以加載任何類型的文件,但文件里存放的必須是js語句
*/
程序運行結果:
當然這只是最基本的理解,對于JSONP的運用還有很多特定的規則
下面再通過兩個例子說明:
首先我在自己的個人服務器上放置一個txt文件,以便跨域讀取用:
注意里面的test函數,是運用JSONP的核心。
function test(data) {
var html = "";
for(var i = 0; i < data.s.length; i++) {
html += '
' + data.s[i] + '';document.getElementById("god").innerHTML = html;
}
}
function cli() {
var oScript = document.createElement("script");
oScript.src = "ftp://linhuo:*********@hk3035.hndan.com/web/test/1.txt";
document.body.appendChild(oScript);
}
JSONP我們再來看百度的實時推薦效果:
這也是利用了跨域加載技術,實現起來也不難:
function test(data) {
var oUl = document.getElementById("list");
var html = "";
if(data.s.length) {
oUl.style.display = "block";
for(var i = 0; i < data.s.length; i++) {
html += '
' + data.s[i] + '';}
oUl.innerHTML = html;
} else {
oUl.style.display = "none";
}
}
window.onload = function() {
var in_put = document.getElementById("in");
var oUl = document.getElementById("list");
in_put.onkeyup = function() {
if(this.value != "") {
var oScript = document.createElement("script");
oScript.src = "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=" + this.value + "&cb=test";
document.body.appendChild(oScript);
}else{
oUl.style.display = "none";
}
}
}
總結
以上是編程之家為你收集整理的用JSONP解決ajax跨域問題全部內容,希望文章能夠幫你解決用JSONP解決ajax跨域問題所遇到的程序開發問題。
如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。
本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。
總結
以上是生活随笔為你收集整理的jsonp解决ajax跨域问题,用JSONP解决ajax跨域问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者体验服服务器注册人数已满,王者荣耀体
- 下一篇: 【渝粤题库】陕西师范大学164111 J