首页 > 试题广场 >

编写一个 js 函数 jsonp 的处理函数

[问答题]
编写一个 js 函数 jsonp 的处理函数
 // 手写jsonp
function myCallback(data) {
    console.log(data)
}

function jsonp(url, data, callback) {
    // data是否是字符串,是的话证明data值就是函数名
    if (typeof data == 'string') {
        callback = data
        data = {}
    }
    // 拼接data
    url += url.indexOf('?') === -1 ? '?' : '&'
    url += 'callback=' + callback
    var params = ""
    for (var i in data) {
        params += '&' + i + '=' + data[i]
    }
    url += params
    // 在页面插入script标签
    var script = document.createElement('script')
    script.setAttribute('src', url)
    document.querySelector('head').appendChild(script)

}

jsonp('http://baidu.com/index.html', { id: 34 }, 'myCallback')
jsonp('http://baidu.com/index.html?name="zjn"', { id: 34 }, 'myCallback')
编辑于 2018-08-03 21:08:43 回复(5)
function myCallback(){
    console.log("callback");
}
function jsonp(url, data, callback){
    if(typeof data === "string"){
        callback = data;
        data = {};
    }
    var hasParams = url.indexOf('?');
    url += hasParams? '&' : '?'+'callback='+callback;
    var params;
    for(var i in data){
        params += '&'+i+'='+data[i];    
    }
    url += params;
    var script = document.createElement('script');
    script.setAttribute('src', url);
    document.querySelector('body').appendChild(script);
}

jsonp('http://baidu.com', { id: 34 }, 'myCallback')
发表于 2018-08-03 17:17:09 回复(0)