最近在研究HBuilder,尝试了一个列表上拉加载更多数据。
由于demo给的是本地生成三条测试数据并放置在列表前方,相当于还是本地生成的本地数据。
现在要求实现与其他action连起来,一开始我是想在HBuilder中创建一个Web项目,然后用它的数据,最后发现HBuilder只是对html编码相当专注相当快,建Web项目还有诸多不便;于是换成在HBuilder需要数据的地方添加ajax方法去取另外的eclipse中的action返回的值。
在这个取值的时候,一直没成功取到值,我开始怀疑这个取值是需要跨域的,于是添加了data:"{}", 将dataType改成了dataType:"jsonp",但是一直不走success,alert的错误信息是status:200,responseText:undefined,errorThrown:success is not called。就是ajax已经从action取到值并且返回了,但是无法正确解析并展示在HBuilder建的APP项目里。手机上只能看到alert的错误信息。
查找了多种方法,无果。最后看了这篇博客:http://my.oschina.net/u/1187799/blog/296865
我才意识到也许真的应该换一种方法来实现。
然后我就直接用ajax,数据就正常显示了。
究其原因估计是ajax取值就算是get方式并且没有传过去的参数也要加上data:"{}",这个设置。
附: 上拉加载具体业务实现的js部分。
/**
* 上拉加载具体业务实现*/
function pullupRefresh() {
var self = this;
setTimeout(function() {
self.endPullupToRefresh((++count > 2)); //参数为true代表没有更多数据了。
var table = document.body.querySelector('.mui-table-view');
var cells = document.body.querySelectorAll('.mui-table-view-cell');
$.ajax({
type:"get",
// url:'../json/pullRefresh.json',
url:'http://192.168.1.117:8080/PropertyManagement_UI/homepage/homepageInfo!testJsonList.action',
data:"{}",
dataType:"json",
success:function(data){
for(var i = 0 ;i<data.length;i++){
var li = document.createElement('li');
li.className = 'mui-table-view-cell';
li.innerHTML = '<a class="mui-navigate-right">' + (data[i].content) + '</a>';
table.appendChild(li);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("status:"+XMLHttpRequest.status+"; readyState:"+XMLHttpRequest.readyState + "; responseText:"+XMLHttpRequest.responseText + "; textstatus:"+textStatus + "; errorThrown:" + errorThrown);
}
});
}, 1000);
}