• 使用HBuilder开发移动APP:ajax调用接口数据


    既然要做APP,与接口交互式少不了的,除非只是想做一个纯静态的APP。所以html5+的环境准备好后,我最先开始研究的就是如何与接口交互。

    使用HBuilder新建示例教程后,里面会有一个ajax(网络请求)的列子,文件目录是examples/ajax.html。看了下这个文件的代 码,它的功能就是点击“提交”按钮后提交参数给接口,然后根据选择的返回数据格式,将一段字符串打印出来。我准备改造下这段代码,改由页面加载时调用列表 接口,并在APP里显示这段列表,毕竟这种情况应该经常会用到。

    1。在list.html里增加一个访问这段列表的链接

    <li class="mui-table-view-cell mui-plus-visible">
    	<a class="mui-navigate-right" href="examples/ajaxlist.html">
    		ajax加载接口列表数据
    	</a>
    </li>

    2。在examples目录新建文件ajaxlist.html

    3。在这个文件里先写上展示列表的HTML框架。我是这么写的

    <div id="records_count">
    	//显示接口列表里的记录总数				
    </div>
    <table id="list" border="1" width="100%" style="padding: 5px 10px;text-align: center;" >
    	//显示列表数据
    </table>

    4。码一段JS代码,用于在页面加载时ajax调用接口

    var network = true;
    if(mui.os.plus){
    	mui.plusReady(function () {
    		if(plus.networkinfo.getCurrentType()==plus.networkinfo.CONNECTION_NONE){
    			network = false;
    		} else {
    		    //调用接口数据的入口方法
    			getList();
    		}
    	});
    
    }

    其中,getList就是调用接口数据的入口方法。下面来编写getList方法

    var ajax = function() {
    	//利用askh5的演示接口数据
    	var url = "http://askh5.com/try/data/starJson";
    	//发送数据,随便填,反正返回的数据都是那个样
    	var data = {
    		name: "askh5.com",
    		author: "gzdayou",
    		description: "最好的HTML5社区..."
    	};
    	respnoseEl.innerHTML = '正在请求中...';
    	$.post(url, data, success, 'json');
    };
    
    //加载时调用接口数据,加载列表
    function getList()
    {
    	if(network){
    		ajax();
    	}else{
    		mui.toast("当前网络不给力,请稍后再试");
    	}
    }

    这里面调用的接口是在askh5的angularjs入门教程里看到的,是一段演示json数据。


    $.post(url, data, success, 'json');


    上面这个代码片段里的success就是post方法的回调方法,下面来编写success方法,来处理返回的数据

    var respnoseEl = document.getElementById("records_count");
    var list = document.getElementById("list");
    //成功响应的回调函数
    var success = function(response) {
    	var str = JSON.stringify(response);
    	console.log(str);
    	//str = JSON.stringify(response);
    	respnoseEl.innerHTML = "总记录:" + response.count; 
    	list.innerHTML = "<tr class='title'><td>字段1</td><td>字段2</td></tr>";
    	mui.each(response.records, function(key, elem) {
    		console.log("elem.name:" + elem.Name );
    		var li = document.createElement("tr");
    		//li.setAttribute("id", key);
    		var col1 = document.createElement("td");
    		col1.className = "col1"
    		col1.innerHTML = elem.Name; 
    		li.appendChild(col1);
    		var col2 = document.createElement("td");
    		col2.className = "col2"
    		col2.innerHTML = elem.Club;
    		li.appendChild(col2);
    		list.appendChild(li);
    	});
    	console.log("list" + list.innerHTML );
    };

    好大一坨代码用来生成一段列表,要是用angularjs会少些好多代码。。。
    最后的效果就是:

    833790daa512ef1f69f731c6a8d38880.png
  • 相关阅读:
    上传视频到七牛云django端实现
    课程全文检索接口
    搜索引擎工作原理
    创建订单并生成支付链接接口
    支付宝支付流程
    通过课程查询商品信息
    如何使用 RESTClient 调试微信支付接口
    关于HTML使用ComDlg ActiveX 无法弹出相应对话框的问题1
    Android自定义View的实现方法,带你一步步深入了解View(四)
    Android视图状态及重绘流程分析,带你一步步深入了解View(三)
  • 原文地址:https://www.cnblogs.com/h5fans/p/5665188.html
Copyright © 2020-2023  润新知