JSONP

轉載

import { JSONP } from './JSONP'
// 調用
JSONP({
  url: 'url',
  data: {  
    key1: 'key1'  
  },  
  callback (data) {  
    // data 是服務端返回的數(shù)據(jù)  
  }  
})
// JSONP.js
let JSONP = (config = {}) => {
  let { data, url, callback } = config
  // 拼接請求Url
  if (!url) throw new Error('url is required!')
  let name = `id_${(new Date()).getTime()}_${Math.random().toString().substr(2)}`
  let srcUrl = getSrcUrl(url, {
    data,
    callback: name
  })
  // 插入Script標簽
  let script = document.createElement('script')
  script.type = 'text/javascript'
  script.src = srcUrl
  script.id = name
  // CallBack 放到 window 對象,調用后銷毀
  window[name] = function (json) {
    // 執(zhí)行這個函數(shù)后藕夫,要銷毀這個函數(shù)
    window[name] = undefined
    // 獲取這個script的元素
    var elem = document.getElementById(name)
    // 刪除head里面插入的script孽糖,這三步都是為了不影響污染整個DOM啊
    removeElem(elem)
    // 執(zhí)行傳入的的函數(shù)
    callback && typeof callback === 'function' && callback(json)
  }
  var head = document.getElementsByTagName('head')
  if (head && head[0]) {
    head[0].appendChild(script)
  }
}
let getSrcUrl = (url, data) => {
  let _url = url + (url.indexOf('?') === -1 ? '?' : '&')
  let ret = ''
  if (typeof data === 'string') {
    ret = data
  } else if (typeof data === 'object') {
    for (let key in data) {
      ret += '&' + key + '=' + encodeURIComponent(data[key])
    }
  }
  ret = ret.substr(1)
  return _url + ret
}
let removeElem = (elem) => {
  let parent = elem.parentNode
  if (parent && parent.nodeType !== 11) {
    parent.removeChild(elem)
  }
}
export default JSONP
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市毅贮,隨后出現(xiàn)的幾起案子办悟,更是在濱河造成了極大的恐慌,老刑警劉巖滩褥,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件病蛉,死亡現(xiàn)場離奇詭異,居然都是意外死亡瑰煎,警方通過查閱死者的電腦和手機铺然,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酒甸,“玉大人魄健,你說我怎么就攤上這事〔迩冢” “怎么了诀艰?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長饮六。 經常有香客問我,道長苛蒲,這世上最難降的妖魔是什么卤橄? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮臂外,結果婚禮上窟扑,老公的妹妹穿的比我還像新娘喇颁。我一直安慰自己,他們只是感情好嚎货,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布橘霎。 她就那樣靜靜地躺著,像睡著了一般殖属。 火紅的嫁衣襯著肌膚如雪姐叁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天洗显,我揣著相機與錄音外潜,去河邊找鬼。 笑死挠唆,一個胖子當著我的面吹牛处窥,可吹牛的內容都是我干的。 我是一名探鬼主播玄组,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼滔驾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了俄讹?” 一聲冷哼從身側響起哆致,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颅悉,沒想到半個月后沽瞭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡剩瓶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年驹溃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片延曙。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡豌鹤,死狀恐怖,靈堂內的尸體忽然破棺而出枝缔,到底是詐尸還是另有隱情布疙,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布愿卸,位于F島的核電站灵临,受9級特大地震影響,放射性物質發(fā)生泄漏趴荸。R本人自食惡果不足惜儒溉,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望发钝。 院中可真熱鬧顿涣,春花似錦波闹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒲障,卻和暖如春歹篓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晌涕。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工滋捶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人余黎。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓重窟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惧财。 傳聞我的和親對象是個殘疾皇子巡扇,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內容