怎样在H5页面实现数据交互

答案 这次给大家带来怎样在H5页面实现数据交互,在H5页面实现数据交互的注意事项有哪些,下面就是实战案例,一起来看一下。对于现在APP开发来说,目前流行的两个方式是原生和H5。就如同之前业界程序猿争论的BS和CS之争一样,业界对于H5和原生也有不小的争论。对于前者的争论在于PC端,后

怎样在H5页面实现数据交互

这次给大家带来怎样在H5页面实现数据交互,在H5页面实现数据交互的注意事项有哪些,下面就是实战案例,一起来看一下。

对于现在APP开发来说,目前流行的两个方式是原生和H5。就如同之前业界程序猿争论的BS和CS之争一样,业界对于H5和原生也有不小的争论。对于前者的争论在于PC端,后者在于移动端上体现。

那一个APP适合用什么技术来开发,主要通过下面几点来判断:

1、APP对于文字的要求(格式加粗,字体多样性)是否高,H5可以很好的实现,而原生则会弱于H5;

2、APP对于交互(页面切换,部分版块变化)的要求是否高,H5通常在交互上比较吃力,有交互的需求是基本上是在加载一个网页,而原生来说是很简单的一个过程,只是加载变化部分;

3、APP对于网络的要求(网络较差、是否离线操作)的敏感度,原生可以做到,H5虽然能做,但难度较大;

4、APP对于硬件(麦克风、摄像头、重力感应器)时候有硬性要求,原生完美实现,未来有新的功能也能有很好的扩展,而H5望尘莫及;

5、APP对于一些活动的更换频繁程度,对此H5扳回一局,H5对此更换十分方便,维护方便;

6、当然就是预算和对时间的要求,用户体验度要求不高的话,那可以用H5来做。

所以综上所述,对于交互性较强建议原生态开发,而那些大量数据展示的,做H5嵌套进原生框架中,这样APP会有良好的体验。同样在这种情况下,混合开发对于全原生态开发下来说是缩短工期,而对比H5来说,将来的可扩展性和用户体验得到保证。

基于上篇http接口开发的博客,这篇文章给大家详解,H5页面如何调用接口对数据进行交互以及与原生态镶嵌。

首先展示两个我自己编写的请求接口、获得数据解析之后填充到H5页面的通用方法(json格式),可以复制直接使用,已写好注释

//请求接口function ajaxForJson(url, op, jsonData, array_params_list) {

$.post(myConfigHost + url, { "op": op, "jsonData": encodeURIComponent(JSON.stringify(jsonData)) }, function (data)

{ if (typeof (array_params_list) == 'undefined' || array_params_list == "" || array_params_list==null)

{

ajaxForJsonCommon(data,"#p_temp_items", "#pMain", "");

} else

{ if (array_params_list.length > 0)

{ for (var p = 0; p < array_params_list.length; p++)

{

ajaxForJsonCommon(data,array_params_list[p]["template_id"], array_params_list[p]["show_id"], array_params_list[p]["data_name"]);

}

}

}

});

}//数据解析、模板填充function ajaxForJsonCommon(data,template_id,show_id,data_name)

{ var temp_items = $(template_id).html();//获取模板内容

var finalHTML = ""; //最终html填充好的字符串

var list = eval('(' + data + ')'); //这句固定这么写,兼容所有浏览器,将字符串,转成js的json对象,可以通过.的方式得到数组或者类对象

if (data_name != "") {

list = list[data_name];

} for (var i = 0; i < list.length; i++) { //这句几乎也是固定,后面自行封装

var temp_item = temp_items; //每次都是用新模版,避免模版只能使用一次,用到replace函数

for (var itemKey in list[i]) { //js是有in语法的,用于提出json里的key-value

if (typeof (wangjifengHandler_key) != 'undefined') {

wangjifengHandler_key(itemKey, list[i], template_id);

} for (var m = 0; m < 4; m++) {

temp_item = temp_item.replace("{" + itemKey + "}", list[i][itemKey]);

}

}

finalHTML += temp_item;//拼接内容 }

$(show_id).html(finalHTML);//将内容填充到html模板内

if (typeof (wangjifengHandler) != 'undefined') {

wangjifengHandler(template_id);

}

}1.查询功能

请求通用方法获得已填充好的html

GetQueryString()方法用于接收http请求所带的参数,便于与原生态进行嵌套。 例如请求地址:127.0.0.1:8002/h5app/MyStudy.html?UserId=123456 那么就会获得UserId的值。

ajaxForJson()这个方法就是我们刚刚写的请求接口通用方法,第一个值为接口地址,第二个值为接口名称,第三个值为接口指定格式的请求数据(本篇文章都是json格式)

我们先F12看下请求接口之后返回的数据

json格式数组的数据。包含CourseId,CourseImage,CourseName,刚刚我写的两个通用方法派上用场了。通过他们,可以实现请求接口、获得数据解析之后填充到H5页面,意味着我们这个时候什么都不用做,只需要到H5页面做数据展示就OK了。

<body>

<!--

作者:Wangjifeng

时间:2018-03-19

描述:html模版,默认隐藏,只为了读取出里面的模版html -->

<p id="p_temp_items" style="display: none;">

<p class="content">

<p id="left"><img src="{CourseImage}" width="118.5px" height="67px"></p>

<p id="right">{CourseName}</p>

</p>

</p>

<p id="pMain" class="main">

<!--<p class="content">

<p id="left"><img src="img/kc_bg01.png" width="118.5px" height="67px"></p>

<p id="right">阿里前端P6架构师培养计划</p>

</p>

<p class="content">

<p id="left"><img src="img/kc_bg01.png" width="118.5px" height="67px"></p>

<p id="right">阿里前端P6架构师培养计划</p>

</p>

<p class="content">

<p id="left"><img src="img/kc_bg01.png" width="118.5px" height="67px"></p>

<p id="right">阿里前端P6架构师培养计划</p>

</p>

<p class="content">

<p id="left"><img src="img/kc_bg01.png" width="118.5px" height="67px"></p>

<p id="right">阿里前端P6架构师培养计划</p>

</p>

<p class="content">

<p id="left"><img src="img/kc_bg01.png" width="118.5px" height="67px"></p>

<p id="right">阿里前端P6架构师培养计划</p>

</p>

<p class="content">

<p id="left"><img src="img/kc_bg01.png" width="118.5px" height="67px"></p>

<p id="right">阿里前端P6架构师培养计划王继峰开发创建的页面H5开发的页面</p>

</p>-->

</p>

</body>有几个注意的地方

1.需要将以前的p 添加id="pMain",p里内容注释

2.新增一个p id="p_temp_items" display=“none”

3.将注释内容复制到p里(一个对象就够了),再以{属性名称}进行数据填写就可以了。这样的操作主要是为了配合两个通用方法进行html模板填充。

我们来看看效果,一个简单的查询就完成了~

2.编辑功能

首先来看看页面,两个开关,实现对状态的更改操作

我们要对这两个状态进行更改操作,那么首先进入页面时,就要获取到这两个状态的值进行开关的绑定。并且用js进行取值。先看看请求后获得的json

EnableCourse为课程展示的值,EnableInfo为资料展示的值。ajax请求获取到了,那么怎么利用js进行取值呢?

<script type="text/javascript"> var UserId = GetQueryString("UserId");

ajaxForJson("/user/userInfo.aspx", "myInfo", { "UserId": UserId

}); var EnableCourse = 1; //课程展示状态

var EnableInfo = 1; //资料展示状态

//获取课程展示、资料展示状态

function wangjifengHandler_key(key, item) { if(key == "EnableCourse") {

EnableCourse = item[key];

} else if(key == "EnableInfo") {

EnableInfo = item[key];

}

}</script>wangjifengHandler_key为通用方法已经编写好的取值方法,所以直接调用,key-value的格式,这样就可以轻易利用通用方法取你想要的值并进行存储了,方便各种操作。

我们再回过头看看通用方法中有一个名为wangjifengHandler()的方法,他在数据取到并填充至html模板之后进行调用绑定。这个时候我们就可以在html里用它执行各种增删改操作了,每次提交请求之后,这个方法都会执行 //回调函数,在模版填充完毕,自动调用

function wangjifengHandler() { //进行开关的绑定

if(EnableCourse == 0) {

$(".img_course").attr("src", "img/switch_close.png");

} if(EnableCourse == 1) {

$(".img_course").attr("src", "img/switch_open.png");

} if(EnableInfo == 0) {

$(".img_Info").attr("src", "img/switch_close.png");

} if(EnableInfo == 1) {

$(".img_Info").attr("src", "img/switch_open.png");

} //绑定反复单击事件

$(".img_course,.img_Info").click(function() { var value_scr = $(this).attr("src"); var value_src_open = $(this).attr("src_open"); var value_src_close = $(this).attr("src_close"); var value_src_type = $(this).attr("value_src_type"); var type = ""; var type_state = ""; if(value_src_type == "kczs") { //课程展示

type = "setEnableCourse";

type_state = EnableCourse;

} else { //资料展示

type = "setEnableInfo";

type_state = EnableInfo;

} //课程展示、资料展示状态设置

$.post(myConfigHost + "/user/userInfo.aspx", { "op": type, "jsonData": encodeURIComponent(JSON.stringify({ "UserId": UserId, "EnableState": type_state

}))

}, function(data) { var dataObj = eval("(" + data + ")"); //转换为json对象

if(type == "setEnableCourse") {

EnableCourse = dataObj.State;

} else {

EnableInfo = dataObj.State;

}

}); if(value_scr == value_src_open) {

$(this).attr("src", value_src_close);

} else {

$(this).attr("src", value_src_open);

}

});

}

前面杂七杂八的代码可以忽略~主要是利用前面wangjifengHandler_key()方法取到两个我们想要的值后,然后在wangjifengHandler()中post提交给接口执行修改操作,根据接口响应状态,再进行页面绑定。

删除也和这一模一样,利用wangjifengHandler_key()取到你所需的值,于wangjifengHandler()中post提交,执行之后制动重新加载页面。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

max-width和min-width的使用技巧

text-align如何实现两端对齐

国际化是一个长期过程,一个产品能在国际取得比较明显的成绩需要三到五年。

阿里和腾讯都正在国际化的路上,采用的都是单品集中突破。只是他们的体量大,不像金山那样,国际化一个单品就成为国际企业。

同时这两个公司都是通过资本在海外做扩张,他对于自身业务的全球化需求并不是非常迫切。

除了资本运作外,两家都是在海外用单品突破的方式。

腾讯的国际化是微信,以海外华裔的传播为基础,逐渐辐射到外国人。所以初期会看到,在东南亚传播非常快。而这块福利吃完后,国际化就进入了拉锯战。前面WhatsApp,后面有印度,俄罗斯,韩国,越南等各个国家的本土创业公司做的竞品。所以拳头市场的开拓比较慢。

阿里外贸起家,其实对海外做的事情也不少,不过早期在美国大势扩张的结果是差点破产(很容易搜到),给整个高层留下了很深的“阴影”。一四年后,阿里把全球化作为战略重点,一是AliExpress见成效,二是收购UC,看到UC在 海外的成绩。但毕竟阿里的国际化转身没那么快,实际发力,只有一两年。

总的来说,如果阿里坚持投入,再过两三年可以听到一些成绩。腾讯的话,持续是有在投注,所以海外市场,一直在慢慢增长。但是他们并不认为国际化是目前的首要工作,所以即使做出成绩,说不定你也没有听到宣传。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

图片声明:本站部分配图来自人工智能系统AI生成,国外stocksnap摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国外贸事业出一份力,发布内容不收取任何费用也不接任何广告!
 

  • 热门焦点
  • 江苏省泰州市泰兴市过船镇仁寿村邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市过船镇仁寿村邮编,江苏省泰州市泰兴市过船镇仁寿村的邮编,江苏省泰州市泰兴市过船镇仁寿村的邮政编码,江苏省泰州市泰兴市过船镇仁寿村的邮政编码是多少,江苏省泰州市泰兴市过船镇仁寿村的邮政编码查询,江苏省泰州市泰兴市过船镇仁寿村的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市宁界镇龙王村邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市宁界镇龙王村邮编,江苏省泰州市泰兴市宁界镇龙王村的邮编,江苏省泰州市泰兴市宁界镇龙王村的邮政编码,江苏省泰州市泰兴市宁界镇龙王村的邮政编码是多少,江苏省泰州市泰兴市宁界镇龙王村的邮政编码查询,江苏省泰州市泰兴市宁界镇龙王村的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市黄桥镇文明南村邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市黄桥镇文明南村邮编,江苏省泰州市泰兴市黄桥镇文明南村的邮编,江苏省泰州市泰兴市黄桥镇文明南村的邮政编码,江苏省泰州市泰兴市黄桥镇文明南村的邮政编码是多少,江苏省泰州市泰兴市黄桥镇文明南村的邮政编码查询,江苏省泰州市泰兴市黄桥镇文明南村的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市古溪镇宝塔路邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市古溪镇宝塔路邮编,江苏省泰州市泰兴市古溪镇宝塔路的邮编,江苏省泰州市泰兴市古溪镇宝塔路的邮政编码,江苏省泰州市泰兴市古溪镇宝塔路的邮政编码是多少,江苏省泰州市泰兴市古溪镇宝塔路的邮政编码查询,江苏省泰州市泰兴市古溪镇宝塔路的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市横垛镇横垛村邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市横垛镇横垛村邮编,江苏省泰州市泰兴市横垛镇横垛村的邮编,江苏省泰州市泰兴市横垛镇横垛村的邮政编码,江苏省泰州市泰兴市横垛镇横垛村的邮政编码是多少,江苏省泰州市泰兴市横垛镇横垛村的邮政编码查询,江苏省泰州市泰兴市横垛镇横垛村的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市横垛镇育才路邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市横垛镇育才路邮编,江苏省泰州市泰兴市横垛镇育才路的邮编,江苏省泰州市泰兴市横垛镇育才路的邮政编码,江苏省泰州市泰兴市横垛镇育才路的邮政编码是多少,江苏省泰州市泰兴市横垛镇育才路的邮政编码查询,江苏省泰州市泰兴市横垛镇育才路的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市黄桥镇永丰后园邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市黄桥镇永丰后园邮编,江苏省泰州市泰兴市黄桥镇永丰后园的邮编,江苏省泰州市泰兴市黄桥镇永丰后园的邮政编码,江苏省泰州市泰兴市黄桥镇永丰后园的邮政编码是多少,江苏省泰州市泰兴市黄桥镇永丰后园的邮政编码查询,江苏省泰州市泰兴市黄桥镇永丰后园的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市泰兴镇羌溪花园邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市泰兴镇羌溪花园邮编,江苏省泰州市泰兴市泰兴镇羌溪花园的邮编,江苏省泰州市泰兴市泰兴镇羌溪花园的邮政编码,江苏省泰州市泰兴市泰兴镇羌溪花园的邮政编码是多少,江苏省泰州市泰兴市泰兴镇羌溪花园的邮政编码查询,江苏省泰州市泰兴市泰兴镇羌溪花园的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市古溪镇邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市古溪镇邮编,江苏省泰州市泰兴市古溪镇的邮编,江苏省泰州市泰兴市古溪镇的邮政编码,江苏省泰州市泰兴市古溪镇的邮政编码是多少,江苏省泰州市泰兴市古溪镇的邮政编码查询,江苏省泰州市泰兴市古溪镇的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市泰兴镇保健巷邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市泰兴镇保健巷邮编,江苏省泰州市泰兴市泰兴镇保健巷的邮编,江苏省泰州市泰兴市泰兴镇保健巷的邮政编码,江苏省泰州市泰兴市泰兴镇保健巷的邮政编码是多少,江苏省泰州市泰兴市泰兴镇保健巷的邮政编码查询,江苏省泰州市泰兴市泰兴镇保健巷的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市泰兴镇华泰公寓邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市泰兴镇华泰公寓邮编,江苏省泰州市泰兴市泰兴镇华泰公寓的邮编,江苏省泰州市泰兴市泰兴镇华泰公寓的邮政编码,江苏省泰州市泰兴市泰兴镇华泰公寓的邮政编码是多少,江苏省泰州市泰兴市泰兴镇华泰公寓的邮政编码查询,江苏省泰州市泰兴市泰兴镇华泰公寓的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市泰兴镇中华巷邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市泰兴镇中华巷邮编,江苏省泰州市泰兴市泰兴镇中华巷的邮编,江苏省泰州市泰兴市泰兴镇中华巷的邮政编码,江苏省泰州市泰兴市泰兴镇中华巷的邮政编码是多少,江苏省泰州市泰兴市泰兴镇中华巷的邮政编码查询,江苏省泰州市泰兴市泰兴镇中华巷的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市泰兴镇西鞠家巷邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市泰兴镇西鞠家巷邮编,江苏省泰州市泰兴市泰兴镇西鞠家巷的邮编,江苏省泰州市泰兴市泰兴镇西鞠家巷的邮政编码,江苏省泰州市泰兴市泰兴镇西鞠家巷的邮政编码是多少,江苏省泰州市泰兴市泰兴镇西鞠家巷的邮政编码查询,江苏省泰州市泰兴市泰兴镇西鞠家巷的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市泰兴镇三泰新村邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市泰兴镇三泰新村邮编,江苏省泰州市泰兴市泰兴镇三泰新村的邮编,江苏省泰州市泰兴市泰兴镇三泰新村的邮政编码,江苏省泰州市泰兴市泰兴镇三泰新村的邮政编码是多少,江苏省泰州市泰兴市泰兴镇三泰新村的邮政编码查询,江苏省泰州市泰兴市泰兴镇三泰新村的邮政编码快速查询。
    01-09
  • 江苏省泰州市泰兴市南沙镇唐港村邮编是多少

    邮编查询为您提供江苏省泰州市泰兴市南沙镇唐港村邮编,江苏省泰州市泰兴市南沙镇唐港村的邮编,江苏省泰州市泰兴市南沙镇唐港村的邮政编码,江苏省泰州市泰兴市南沙镇唐港村的邮政编码是多少,江苏省泰州市泰兴市南沙镇唐港村的邮政编码查询,江苏省泰州市泰兴市南沙镇唐港村的邮政编码快速查询。
    01-09