Ajax异步刷新局部页面的小李子
看到下面那幅图没有,我们要的是当点击确定以后,根据条形码搜索出商品信息,并且异步刷新右边页面:
再来个小李子:
这个页面呢,就是输入ICCID信息之后,鼠标离开input框之后,立即刷新认证信息填写表单,当然都是用Ajax,区别仅是触发jQuery事件的方式不同;
HTML:
<table class="splr_table" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="right">按条形码搜索:</td>
<td>
<input class="pp_text" type="text" name="" value="{$info.bar_code}" id="txtBarcode" style="float: left;" />
<input class="tj-button" onclick="search_bar_code({$info.goods_id})" type="button" id="btnMatch" value="确定" />
</td>
</tr>
Ajax:
function search_bar_code(id)
{ //根据条形码搜索商品信息
var bar_code = parseInt($('#txtBarcode').val());
$.ajax({
url:"{:U('Goods/search_bar_code')}",
type:'post',
dataType:'json',
data:{'id':id,'bar_code':bar_code},
success:function(res){
if(res.notice == 'ok' && res.html){
$('#goodsForm').html(res.html);
}else{
alert(res.notice);
}
}
});
}
然后就是接口函数:
<?php
namespace Supplier\Controller;
use Think\Controller;
class GoodsController extends CommonController {
/* 根据条形码找出商品信息 */
function search_bar_code()
{
if(IS_AJAX){
$input = I('post.');
$id = intval($input['id']);
$bar_code = intval($input['bar_code']);
$service_id = $_SESSION['service_site']['service_id'];
$g = D('goods');
$info = $g->where("bar_code = $bar_code")->find();
$res = array('notice'=>'ok');
if($info){
$date = date('Y-m-d',time());
$path = C('UNLINK_PATH').$date.'/';
if(!file_exists($path)){
mkdir($path); //如果不存在图片目录则创建
}
$tmp_img = array();
for($i = 1;$i < 7;$i++){
$f_name = 'thumb'.$i;
if(array_key_exists($f_name,$info) && $info[$f_name]){ //如果取出的商品有图片则进行copy
$old_img = C('UNLINK_PATH').$info[$f_name];
if(file_exists($old_img)){
$tmp = explode('.',$old_img);
$ext = end($tmp);
$new_img = uniqid().'.'.$ext;
$f = copy($old_img,($path.$new_img));
if($f){ //如果复制成功则记录新的图片
$tmp_img[$f_name] = $date.'/'.$new_img;
$info[$f_name] = $tmp_img[$f_name];
}else{
$this->log_add(array('content'=>'根据条形码搜索','des'=>'复制图片出错'));
}
}
}
}
if(count($tmp_img) > 0){ //更新商品图片信息
$f = $g->where("goods_id = $id")->save($tmp_img);
if(!$f){
$this->log_add(array('content'=>'根据条形码搜索','des'=>'保存图片信息出错'));
}
}
$info['goods_id'] = $id;
//取出供应商与栏目列表start
$c = D('Category');
$category_1 = $c->where('parent_id = 0')->select();
$this->assign('category_1',$category_1);
if($info['category_1']){
$this->assign('category_2',$c->where('parent_id = %d',$info['category_1'])->select());
if($info['category_3']){
$this->assign('category_3',$c->where('parent_id = %d',$info['category_2'])->select());
}
}
//取出供应商与栏目列表end
$this->assign('info',$info);
$html = $this->fetch('goods_ajax');
$res['html'] = $html;
}else{
$res['notice'] = '没有该条形码信息';
}
$this->ajaxReturn($res,'JSON');
}
}
}
$html = $this->fetch('goods_ajax');
其实这句话才是关键,他是将局部页面(需要异步刷新的部分)整个fetch(display呢就是将HTML页面代码获取过来并输出,而fetch呢就是将代码获取过来但是并不做输出)然后将整个页面的代码作为json数据($res['html'] = $html;)传输过去。
Ajax异步刷新局部页面的小李子的更多相关文章
- 【转】【Asp.Net】了解使用 ASP.NET AJAX 进行局部页面更新
简介Microsoft的 ASP.NET 技术提供了一个面向对象.事件驱动的编程模型,并将其与已编译代码的优势结合起来.但其服务器端的处理模型仍存在技术本身所固有的几点不足: 进行页面更新需要往返服务 ...
- js异步刷新局部页面
真不想说博客园的Markdown编辑器,我发表到我的个人博客上多好看的一篇文章,发到博客园上格式就成这个鸟样了,哎,不发现到博客首页了,就个人存个档吧 最近在做一个异步刷新页面中的局部,这样做可以防出 ...
- jQuery实现AJAX定时刷新局部页面实例
本篇文章通过两种方法实例讲解ajax定时刷新局部页面,当然方法有很多种,也可以不使用ajax来刷新页面,可以使用jquery中的append来给指定内容加东西,但是都不太实用,最实用的方法还是ajax ...
- Ajax初步实现页面局部内容更替
类似于QQ邮箱的那种局部页面跳转,单页应用常用到,目前很多网页都是这种,但是弊端就是一次加载过多资源,首次加载卡出翔啊
- ASP.NET MVC如何在页面加载完成后ajax异步刷新
背景:之前已写过两篇有关Ajax的随笔,这一篇是单独针对在页面加载完成的Ajax操作.比如说打开学生列表页面,先加载页面,然后以Ajax的方式,从数据库中检索相应的学生信息,给浏览者更好的体验. 简单 ...
- Ajax异步刷新地址栏url改变(利用Html5 history.pushState实现)
早些时候在博客园参阅了不少资料,然后决定入驻博客园分享自己的开发心得,最近准备转方向筹备着辞职交接工作,所以有点忙碌,搁置了一个月才匆匆写下这么一篇随笔,希望能给大家带来一点帮助吧,资料和学识有限,如 ...
- ajax 异步刷新
第一种方法,ajax实现:当然,ajax使用起来确实很简单就可以实现,但是里面的很多知识还是比较有点深的.我之前做页面时间自动刷新的功能就是用的ajax.完整代码是:1.getTime.php: 复制 ...
- 【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
转自: https://blog.csdn.net/eson_15/article/details/51487323 昨天把项目部署了一下,玩了玩,今天完善了一下购物车中修改商品数量就能局部 ...
- Ajax+Js局部刷新
通过 AJAX,JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信.通过这个对象, JavaScript 可在不重载页面的情况与 Web ...
随机推荐
- django 获取系统当前时间 和linux 系统当前时间不一致 问题处理。
问题场景: 在django admin models 实体对象添加一个属性最后修改时间,用户在添加.修改是系统自动修改操作时间. UpdateTime自动获取系统时间.并且自动修改. 代码设置如下. ...
- mysql数据库同步
mysql数据库同步 1.1. Master 设置步骤 配置 my.cnf 文件 确保主服务器主机上my.cnf文件的[mysqld]部分包括一个log-bin选项.该部分还应有一个server-i ...
- cocos2dx跨平台使用自定义字体
首先需要一个ttf文件的字体. 在ios中的方法: 把ttf文件放入资源文件下,然后在你的工程的Info.plist文件中新建一行(Add Row),添加key为:Fonts provided by ...
- Reactor模式与观察者模式
多线程编程常见模式 观察者模式: 单一的观察点,事件单一 反应器模式: 多个观察点,事件不单一(NIO里面的Selector选择器,基于Channel的事件进行多路的IO复用机制) 图-网上都是这张, ...
- ua实现类似 www.taobao.com 在手机上打开自动转变为 m.taobao.com 的域名转换
user-agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.25 ...
- Java中List转数组,必须带个参数
public static void main(String[] args) { List<String> lst = new ArrayList(); lst.add("赵云 ...
- android 提高进程优先级 拍照永不崩溃(闪退)
首先科普一下Android系统进程的优先级: 当系统的内存不足时, android系统将根据进程优先级选择杀死一些不太重要的进程. 进程优先级从高到低分别为: 1. 前台进程. 以下的进程为前台进程: ...
- Ubuntu 12.04 gedit编辑器 中文乱码
百度一下查看了很多关于这个问题的解决方法,无非是用通过配置编辑器修改键值来解决.但是由于我的ubuntu是12.04版本的,搜索到的很多方法都不能用,网上一般的解决办法如下: 打开“注册表”(从字面理 ...
- 初探appium之元素定位(1)
无论是selenium还是appium,元素定位都是我们开始实现自动化面临的第一个问题.selenium还好,我们可以在浏览器的调试页面进行元素定位还是蛮方便的.那么appium怎么做呢? 我看到很多 ...
- eclipse 拨打电话、拨号,发短信
1.拨打电话,拨号 //拨打电话Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(U ...