Ajax获取数据然后显示在页面的实现方法

主要功能流程介绍

循环获取列表数据

点击列表数据进入详情页

点击报名参加弹出报名成功提示框

点击提示框中的确定按钮,跳回列表页

代码实现流程和解说

一、列表页

1、访问链接list.php时判断是pc端还是客户端

$user_agent_arr = mall_get_user_agent_arr(); if(MALL_UA_IS_PC == 1) { //****************** pc版 ****************** include_once './list-pc.php'; } else { //****************** wap版 ****************** include_once './list-wap.php'; }

2、如果是wap版就跳转到 list-wap.php 页面,载入 list.tpl.htm页面

$pc_wap = 'wap/'; $tpl = $my_app_pai->getView(TASK_TEMPLATES_ROOT.$pc_wap.'trade/list.tpl.htm');

3、list.tpl.htm 页面进行渲染模板

HTML

<div class="page-view " data-role="page-container"> <div class="sales-list-page"> <div id="render-ele"></div> </div> </div>

JS

$(function() // 渲染模块 { //请求php的url var TRADE_AJAX_URL = window.$__ajax_domain + 'get_trade_list.php'; //获取已经封装在list.js里面的一个对象list_item_class var list_item_class = require('../../../../modules/list/list.js'); //获取模板块 var template = __inline('./list-item.tmpl'); var list_obj = new list_item_class({ ele : $("#render-ele"),//渲染数据到id为render-ele中 url : TRADE_AJAX_URL,//请求数据连接 template : template //渲染的模板 }); });

list-item.tmpl模板内容(循环的列表内容)

<div class="item-wrap"> {{#each list}} {{#if is_enroll}} <a href="./detail.php?topic_id={{id}}&state=is_enter"> {{else}} <a href="./detail.php?topic_id={{id}}&state=no_enter"> {{/if}} <div class="item ui-border-b" > <div class="img-item"> <i class="img" style="background-image: url({{img}});"> </i> </div> <div class="text-item"> <div class="txt-con-1"> <h3 class="title f14">{{title}}</h3> <p class="txt f10 color-999">所属品类:{{type}}</p> </div> <div class="txt-con-2"> <span class="color-333 join-in "> {{ enroll_text }} </span> </div> </div> </div> </a> {{/each}} </div>

4、list.js进行数据处理,仅是对象的部分方法,具体的方法请自行写。

_self.ajax_obj = utility.ajax_request ({ url : self.send_url, data : self.ajax_params, beforeSend : function() { self._sending = true; _self.$loading = $.loading ({ content:'加载中...' }); }, success : function(data) { self._sending = false; //获取数据 var list_data = data.result_data.list; console.log(data); //渲染前处理事件 self.$el.trigger('list_render:before',[self.$list_container,data]); _self.$loading.loading("hide"); //是否有分页 self.has_next_page = data.result_data.has_next_page; // 无数据处理 if(!list_data.length && page == 1) { abnormal.render(self.$render_ele[0],{}); self.$load_more.addClass('fn-hide'); return; } else { self.$load_more.removeClass('fn-hide'); } //把数据放入模板 var html_str = self.template ({ list : list_data }); //插入渲染列表 self.$list_container.append(html_str); //渲染后处理事件 self.$el.trigger('list_render:after',[self.$list_container,data,$(html_str)]); self.setup_event(); }, error : function() { self._sending = false; _self.$loading.loading("hide"); $.tips ({ content:'网络异常', stayTime:3000, type:'warn' }); } })

5、get_trade_list.php接收到前端页面发过来的请求,然后进行数据收集处理最终返回数据给前台页面

// 接收参数 $page = intval($_INPUT['page']); if(empty($page)) { $page = 1; } // 分页使用的page_count $page_count = 5; if($page > 1) { $limit_start = ($page - 1)*($page_count - 1); } else { $limit_start = ($page - 1)*$page_count; } $limit = "{$limit_start},{$page_count}"; //请求数据库的借口 $sales_list_obj = POCO::singleton ( 'pai_topic_class' ); $ret = $sales_list_obj-> get_task_list(false, '', 'id DESC', $limit); // 输出前进行过滤最后一个数据,用于真实输出 $rel_page_count = 4; $has_next_page = (count($ret)>$rel_page_count); if($has_next_page) { array_pop($ret); } $output_arr['page'] = $page; $output_arr['has_next_page'] = $has_next_page; $output_arr['list'] = $ret; // 输出数据 mall_mobile_output($output_arr,false);

6、前端页面接收到get_trade_list.php返回的数据,从而进行判断将数据库的内容显示在前台页面中。模板输出

$tpl->output();

详情页

1、点击列表页进入详情页(detail.php)

detail.php页面 接收 列表传过来的数据

//接收list传过来的参数 $topic_id = intval($_INPUT['topic_id']); $state = $_INPUT['state']; if (empty($topic_id)) { header("location: ".'./list.php'); } //数据库借口 $trade_detail_obj = POCO::singleton ( 'pai_topic_class' ); $ret = $trade_detail_obj->get_task_detail($topic_id,$yue_login_id);

2、判断是pc端还是客户端(类似列表页)

3、跳转到detail-wap.php加载模板detail.tpl.htm同时也带参数过去

$pc_wap = 'wap/'; $tpl = $my_app_pai->getView(TASK_TEMPLATES_ROOT.$pc_wap.'trade/detail.tpl.htm'); //模板附带以下三个参数到detail.tpl.htm中 $tpl->assign('ret', $ret); $tpl->assign('topic_id', $topic_id); $tpl->assign('state', $state);

4、页面引用对象ret中的字段

<div class="sales-detail-page"> <div class="item-wrap"> <div class="item-1 item"> <div class="img-item"> <i class="img" > <img src="{ret.img}"/> </i> </div> <div class="txt-item"> <h3 class="title f16 color-333 fb">{ret.title}</h3> <p class="sign-in-txt color-666"> {ret.enroll_text} </p> </div> </div> <div class="item-3 item"> <div class="txt-item"> <h3 class="title f14 color-333 fb">生意机会详情</h3> <div class="txt-con f14 color-666"> <p class="txt">{ret.content}</p> </div> </div> </div> </div> <div class="sign-name-item"> <!-- IF state = "is_enter" --> <button class="ui-button-submit had-joined"> <span class="ui-button-content">已参加</span> </button> <!-- ELSE --> <button class="ui-button-submit" id="submit"> <span class="ui-button-content">报名参加</span> </button> <!-- ENDIF --> </div> </div>

5、点击报名参加按钮进行数据处理

var _self = {}; $btn.on('click', function() { var data = { topic_id : {ret.id} } utility.ajax_request({ url : window.$__ajax_domain+'add_task_enroll_trade.php', data : data, type : 'POST', cache : false, beforeSend : function() { _self.$loading = $.loading({ content : '发送中.....' }); }, success : function(data) { _self.$loading.loading("hide"); //请求成功后显示成功报名提示框,点击报名提示框确定按钮跳回列表页面 if (data.result_data.result==1) { var dialog = utility.dialog ({ "title" : '' , "content" : '提交成功,点击确定返回', "buttons" : ["确定"] }); dialog.on('confirm',function(event,args) { window.location.href = document.referrer; }); return; } }, error : function() { _self.$loading.loading("hide"); $.tips({ content : '网络异常', stayTime : 3000, type : 'warn' }); } }); });

以上这篇Ajax获取数据然后显示在页面的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

时间: 2024-09-23 09:57:05

Ajax获取数据然后显示在页面的实现方法的相关文章

Ajax获取数据然后显示在页面的实现方法_AJAX相关

主要功能流程介绍 循环获取列表数据 点击列表数据进入详情页 点击报名参加弹出报名成功提示框 点击提示框中的确定按钮,跳回列表页 代码实现流程和解说 一.列表页 1.访问链接list.php时判断是pc端还是客户端 $user_agent_arr = mall_get_user_agent_arr(); if(MALL_UA_IS_PC == 1) { //****************** pc版 ****************** include_once './list-pc.php';

页面向下滚动ajax获取数据的实现方法(兼容手机)_javascript技巧

页面向下滚动ajax获取数据的实现方法(兼容手机) $(window).scroll(function () { var scrollTop = $(this).scrollTop(); var scrollHeight = $(document).height(); var windowHeight = $(this).height(); if (scrollTop + windowHeight >= scrollHeight) { loadPromotions(); } }); var pa

DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)_jquery

Datatables是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 主要功能 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不同主题 DataTables, jQuery UI, Bootstrap, Foundation 各式各样的扩展: Editor, TableTools, FixedColumns -- 丰富多样的option和强大的API 支持国际化 超过2900+个单元测试 免

Ajax添加数据即时显示信息篇_AJAX相关

今天我们要学习的内容是:使用ajax向服务端的数据库添加数据,然后在网页不刷新情况下即时显示被添加的数据.需要说明的是.本次ajax实例教程与前3篇有2点大不同之处. 1:我们要对数据库进行操作.2:更换请求的服务端网页.不再使用Web_ajax.Asp文件.新的请求网页是:Add_Data.Asp.看后缀大家就应该能明白.我在服务端采用的技术是Asp.都说Asp过时了.可他的简单易用,易学深深地吸引着我!当然也你可以使用php, .net,或jsp轻松的模拟该Asp文件的源码.我会在该次教程最

Ajax添加数据即时显示信息篇

今天我们要学习的内容是:使用ajax向服务端的数据库添加数据,然后在网页不刷新情况下即时显示被添加的数据.需要说明的是.本次ajax实例教程与前3篇有2点大不同之处. 1:我们要对数据库进行操作.2:更换请求的服务端网页.不再使用Web_ajax.Asp文件.新的请求网页是:Add_Data.Asp.看后缀大家就应该能明白.我在服务端采用的技术是Asp.都说Asp过时了.可他的简单易用,易学深深地吸引着我!当然也你可以使用php, .net,或jsp轻松的模拟该Asp文件的源码.我会在该次教程最

如何从sqlite数据库中获取数据并显示在listview中?

问题描述 如何从sqlite数据库中获取数据并显示在listview中? 在登录页面后,我想在listview中把Apple显示成A,Boy显示成B等等,直到F.但是在程序中当我完全登录后,只有登录表成功创建,主菜单还是没有创建. 我想在test database中创建主菜单,然后我想从主菜单表(mainmenu table)中获取数据再显示在listview中. 我使用了下面的代码: if(username.length()>0&&password.length()>0) {

javaweb-JAVA从数据库里查了1000个对象数据要显示在页面中,怎么才能提高速度

问题描述 JAVA从数据库里查了1000个对象数据要显示在页面中,怎么才能提高速度 这1000个对象数据显示在页面的一个下拉多选控件里,控件不带分页. 感觉性能都消耗在了对象封装上了,如果不做分页的话还能优化吗? 解决方案 朋友,一千个下拉选项呀,估计用户很难接受,还是换种方式吧 谢谢. 答题不易,望采纳. 解决方案二: 可以减少查询的列数. 解决方案三: 进入页面后再通过ajax请求这么多对象.一般都是id,name.然后在页面是下拉框中追加进入元素.这样看来用户体验就会好很多.不知道是不是你

JS实现获取键盘按下的按键并显示在页面上的方法_javascript技巧

本文实例讲述了JS实现获取键盘按下的按键并显示在页面上的方法.分享给大家供大家参考,具体如下: 请你使用键盘输入一些字符,这些字符就被显示在网页的空白处,是不是少了文本框或文本域之类的东西,觉得挺不习惯呢?这个效果是应用了JavaScript中的document.onkeypress对象,监测键盘的一举一动,并记录下哪些键被按下,有意思吧,想研究Js的朋友,就从这些小例子开始吧. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-web-sh

jquery ajax-jQuery ajax获取数据问题

问题描述 jQuery ajax获取数据问题 程序片段如下: var data_1; $.post("getdata.php",function(string_1){ data_1 = string_1; });为什么string_1的内容无法被获取呢?_ 要想获取其内容,应该如何做呢?麻烦指点下! getdata.php: <?php_ $con = mysql_connect('localhost','root'); mysql_select_db('my_db',$con)