原生Ajax的简单实例

  • 时间:2016-10-20
  • 浏览量:
  • 分类:[ JavaScript]
  • 作者:池剑锋

在Ajax中调用别人的接口会触发到一个叫跨域的问题。那么什么叫跨域呢?跨域是指从一个域名的网页去请求另一个域名的资源。JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象,因此我们有时候我们又需要调用一些api提供的接口,这个时候就会遇到一个跨域的问题了。解决跨域的方法很多,这里我用到的是配合php解决跨域问题,首先我们可以选择把接口引入到php里读取,然后再返回到html里,我们再去请求php页面也就没有了同源策略。

今天我朋友给我提供了一个网站接口,我用这个接口调用了一个数据,简单的做了一个Ajax的demo例子。效果如图所示:

demo.jpg



完整的例子代码:

<!DOCTYPE html>
<html>
<head>
      <meta charset="UTF-8">
      <title>Ajax</title>
      <style type="text/css">
           *{
                 padding: 0;
                 margin:0;
           }
           ul{ width: 690px;
               float: left;
               font-size: 12px;
               color: #838383;
               list-style: none;
           }
           a{
                 color: #000;
                 text-decoration: none;
           }
           li {
                 list-style: none;
               margin-bottom: 20px;
               padding: 10px;
               background-color: #F6F6F6;
               box-shadow: 1px 3px 9px #ccc;
               border-radius: 4px;
               overflow: hidden;
           }
           body{
                 font: 16px/1 "Microsoft yahei",arial;
           }
           h2{ font-size: 15px;
                color: #312424;
                font-weight: bold;
           }
           .dateview{
                 padding: 8px 0px 8px 18px;
                 margin-top: 4px;
                 font-size: 12px;
           }
           .dateview span{
               margin-right: 20px;
           }
           .es_img {
               width: 183px;
               float: left;
               overflow: hidden;
           }
           .es {
               float: left;
               width: 475px;
               margin: 10px 0px 0 10px;
               line-height: 20px;
           }
           .es a {
               background: #fd8a61;
               color: #fff;
               padding: 5px 10px;
               float: right;
               margin: 20px 0 0 0;
               border-radius: 3px;
           }
      </style>
</head>
<body>
      <ul id="wrap">
      </ul>
      <script type="text/javascript">
           var oWrap=document.getElementById('wrap');
           var xHttp = null;
           if(window.XMLHttpRequest){
               xHttp =new XMLHttpRequest();//除了IE6以外的浏览器
           }else{
               xHttp =new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器
           }
           xHttp.open("post","index.php",true);//以post的方式发送
           xHttp.send(null);
           xHttp.onreadystatechange = function(data) {
                 if(xHttp.readyState == 4 && xHttp.status == 200) {
                      var oData = JSON.parse(data.currentTarget.response);//把字符串转换成json对象
                      console.log(oData);
                      for(var i=0;i<oData.data.length;i++){
                            var oLi=document.createElement("li");
                            cleLi(oData.data[i]);
                      }
                 }
           }
           function cleLi(dat){
                 var oLi=document.createElement("li");//创建li
                 var oHtml='<h2>'+dat.title+'</h2>'+
                                  '<p>'+
                                      '<span>'+dat.time+'</span>'+
                                      '<span>作者:'+dat.name+'</span>'+
                                      '<span>分类:[<a href="###">'+dat.type+'</a>]</span>'+
                                   '</p>'+
                                  '<div>'+
                                       '<img src="http://www.chijianfeng.com/uploads/allimg/160926/1-1609260222350-L.jpg">'+
                                  '</div>'+
                                  '<div>'+
                                '<p>'+dat.cont_describe+'</p>'+
                                '<a href="###" target="_blank">阅读全文</a>'+
                              '</div>'
                      oLi.innerHTML=oHtml;
                      oWrap.appendChild(oLi);
           }
      </script>
</body>
</html>


这里是php代码,php的文件名为:index.php 和demo是在同一个目录下。

<?php 
	header("Content-Type:text/html;charset=utf8");//设置字符集
	$url = "http://www.hk3433.com/json/json.php?serviceId=5&actionId=1";
	$content = file_get_contents($url);//获取http内容
	echo $content; //输入内容
?>


欢迎大家留言,如有疑问或者写的不对的地方,欢迎指出。


上一篇:Ajax的原理以及步骤
下一篇:选项卡封装成插件实例
分享给好友