解決跨域問題:服务器代理或jsonp

1、script標籤;
2、在資料加載進來之前,定義好一個fn,fn接收一個參數,fn裏再拿數據;然後需要時通過script標籤加載對應的遠程文件資源,當遠程文件資源被加載時會執行前面定義好的fn,並且把數據當fn參數傳入;
如:1.txt内容为:

fn([1,2,3])

然后在html开头使用script定义fn,一定要放前面,如放window.onload 里,需使用window.fn(){..}这样调用

function fn(data) {
    alert(data)
}

之后下面window.onload

window.onload = function () {
    var btn = document.getElementById('btn')
    btn.onclick = function () {
        //当按钮点击时再去加载远程资源,让他执行;
        var _script = document.createElement('script')
        _script.src = '1.txt'
        document.body.appendChild(_script)
    }
}
因此,操作别的网站的json数据,主要是能够找到调用的命我空间,即,可以有callback=fn的函数



调用接口实现百度下拉提示:

1)、找到接口,http://suggestion.baidu.com/su?wd=keyword&cb=elmok及调用命名,如elmok即我们可以使用的函数名;

2)、使用实时创建script标签

var _script = document.createElement('script')
_script.src = "http://suggestion.baidu.com/su?wd="+this.value+"&cb=elmok"
document.body.appendChild(_script)

3)、开头创建elmok函数使用数据;

function elmok(data){
    var _ul = document.getElementById('ul1')
    var html =''
    if(data.s.length){  //如果得到数据的长度不为0
        _ul.style.display = 'block'
        for(var i=0;i<data.s.length;i++){
            html+='<li><a target="_blank" href="https://www.baidu.com/s?&wd='+data.s[i]+'">'+data.s[i]+'</a></li>'
        }
        _ul.innerHTML = html;
    }
}

得到的数据如图:
可看到 data.s[i]即为数组,可以循环这个数据输出显示为提示内容;
运行



豆瓣搜索接口:

1)、找到接口callback名:http://api.douban.com/book/subjects?q=keyword&alt=xd&callback=elmok

2)、使用script标签创建

btn.onclick = function () {
    if(_q.value !=''){
        var _script = document.createElement('script')
        _script.src = "http://api.douban.com/book/subjects?q="+_q.value+"&alt=xd&callback=elmok"
        document.body.appendChild(_script)
    }
}

2)、开头创建elmok函数使用数据

function elmok(data){
    var msg = document.getElementById('msg')
    var _list = document.getElementById('list')
    msg.innerHTML = data.title.$t + ':'+data['opensearch:totalResults'].$t
    var _entry = data.entry;
    var html = ''
    for(var i=0;i<_entry.length;i++){
        html+='<dl><dt>'+_entry[i].title.$t+'</dt><dd><img src='+_entry[i].link[2]['@href']+' /></dd>'
    }
    _list.innerHTML = html
}


運行