标签:
第一次调用api,耗费了整个下午的时间,谨以这篇文章记录感想和教训。
效果图:
效果说明:点击按钮“新游记”,body、button 的背景颜色、字体颜色,都会改变。
1 <div class="container"> 2 <div id="content"> 3 <p id="infoTime"></p> <!--游记发表时间--> 4 <h1><a href=‘‘ id="showInfo"></a></h1><!--游记标题,及原文链接--> 5 <em id="infoSource"></em> <!--作者--> 6 </div> 7 <button id="getInfo">新游记</button> 8 </div>
首先为不同版本的IE浏览器、其他的浏览器创建了一个XMLHttpRequest对象。采用了try..catch语句
var request=false; try { request=new XMLHttpRequest(); }catch(e1){ try { request=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e2){ try{ request=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e3){ alert("自由发挥"); } } }
var url="api接口地址?参数1&参数2"; request.open("GET",url,true); request.setRequestHeader("apikey","your key"); request.onreadystatechange()=function() { if (request.readyState==4){ if (request.status==200){ var response=request.responseText; var responseJson=JSON.parse(response); //后续代码见下一部分 } } }; request.send(null);
需要注意的几点:
可以看到前面我已经得到了 JS 对象 responseJson。
该 api 每次返回10条游记,但是我想只显示一条,点击“新游记”按钮,再显示下一条。
对象是这样一个格式:{ ...多个名/值对, "data": { "books": [{ "bookUrl": "url", "title": "游记标题","userName": "作者名", "startTime": "7445-05-24"},{ "bookUrl": "url", "title": "游记标题","userName": "作者名", "startTime": "7445-05-24"}], "count": 1000 } }
于是创建了两个变量 i 和 j。i 应用于获取 responseJson 对象数组中的数据,j 用于 url 参数值。
以下代码,向 <h1>的<a>标签传入游记标题。
var showInfo=document.getElementById("showInfo"); showInfo.innerHTML=responseJson.data.books[i].title; i+=1;
当 i>9 时,j 会加1,然后作为 url 的参数,随 http 请求发送。
原理很简单,创建一个内容为十六进制颜色值得数组,随机取得数组值,在 JS 代码中,以 element.style.color=.. / element.style.backgroundColor=.. 的方式,改变窗口、按钮的背景颜色、字体颜色。
window.onload=函数名; // 千万不要在函数名后加 () getInfo.onclick=函数名; // getInfo 表示 button 元素
如果打开页面就加载的函数就一个,button 需要绑定的函数也就一个,上述代码是没问题的。如果要为事件绑定多个函数,那么代码就复杂了,具体内容之后再写吧。
假如在发送 HTTP 请求时,都采用 GET 方式,那么整个调用过程会非常简单。当然,这只是在使用百度 apistore 提供的 api 时的情况。
标签:
原文地址:http://www.cnblogs.com/rui-kk/p/5750810.html