1. 程式人生 > >javascript - 封裝jsonp

javascript - 封裝jsonp

標簽 rand () ack jsonp call params delete json

jsonp牽扯到同源策略、跨域等問題,這裏不細說了.

實現就是創建動態的script標簽來請求後臺地址:

示例:

 jsonp(‘xxx.php‘, { uid: 1 }, function (res) {
      console.log(res)
    })

實例:

 jsonp(‘http://localhost/server.php‘, { uid: 1 }, function (res) {
      console.log(res)
    })

 1     function jsonp (url, params, callback) {
2 var funcName = ‘jsonp‘ + Date.now() + Math.random().toString().substr(2, 5) 3 4 if (typeof params === ‘object‘) { 5 var tempArr = [] 6 for (var key in params) { 7 var value = params[key] 8 tempArr.push(key + ‘=‘ + value) 9 }
10 params = tempArr.join(‘&‘) 11 } 12 13 var script = document.createElement(‘script‘) 14 script.src = url + ‘?‘ + params + ‘&callback=‘ + funcName 15 document.body.appendChild(script) 16 17 window[funcName] = function (data) { 18 callback(data)
19 delete window[funcName] 20 document.body.removeChild(script) 21 } 22 }

javascript - 封裝jsonp