前端javascript发送ajax请求、后台书写function小案例
HTML端页面:
<td> <input class="pp_text" type="text" name="" value="{$info.bar_code}" id="txtBarcode" style="float: left;"/> <input class="tj-button tj-button2" onclick="search_bar_code({$info.goods_id})" type="button" value="确定" /> </td>
javascript页面(我发现在所有HTML也好,javascriot页面也好,这个ThinkPHP之中的U方法的写法,"{:U('goods/add')}"都是通用的;)
<script type="text/javascript"> 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); } } }); } </script>
现在看看后台的接口程序如何写
/* 根据条形码找出商品信息 */ function search_bar_code() { if(IS_AJAX){ $input = I('post.');//接受ajax传递过来的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');// $tmp_img = array(); $info['goods_id'] = $id; //取出供应商与栏目列表end $this->assign('info',$info); $html = $this->fetch('goods_ajax'); $res['html'] = $html; }else{ $res['notice'] = '没有该条形码信息'; } $this->ajaxReturn($res,'JSON'); } }
第17行的goods_ajax是一个静态HTML模板;fetch的作用的返回已经渲染好的HTML的代码;而display是直接输出渲染号的HTML的代码;
其中的goods_ajax的,只是当前HTML页面需要被刷新的一部分,比如一个table
如下
<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 tj-button2" onclick="search_bar_code({$info.goods_id})" type="button" id="btnMatch" value="确定" style="margin-top: 0px; margin-bottom: 0px;" /> </td> </tr> <div class="shop_div"> <select id="category_three1" name="data[category_3]" class="splr_select"> <option value="0">请选择一级分类</option> <foreach name="category_3" item="v"> <option value="{$v.category_id}" <?php if($v['category_id'] == $info['category_3']){echo 'selected';} ?> >{$v.category_name}</option> </foreach> </select> </div> </td> </tr> <tr> <td align="right"><span class="red">*</span>商品名称:</td> <td> <div class="oper-find" style="position: relative;"> <input name="data[goods_name]" class="sp_name relation_store" value="{$info.goods_name}" type="text" placeholder="请输入/选择商品名称" /> </div> </td> </tr>
你只需要记住,接口是如何返回数据,如何发送请求给接口函数的,然后又是如何将返回的数据用于局部刷新的
再上一个小小的接口程序:
这次返回的数据比较小;
/* 处理ajax返回的数据 */ function set_goods_ajax() { if(IS_AJAX){ $input = I('post.'); $id = intval($input['goods_id']); $data = $input['data']; $service_id = $_SESSION['service_site']['service_id']; $where = "goods_id = $id and service_id = $service_id"; $g = D('goods'); $allow_field = array('status','listorder','is_best'); foreach($data as $k=>$v){ //过滤非法字段,虽然有点多余 if(!in_array($k,$allow_field)){ unset($data[$K]); } } $f = $g->where($where)->save($data); if($f){ $res = array('notice'=>'ok'); }else{ $res = array('notice'=>'修改失败!'); } $this->ajaxReturn($res,'JSON'); } }
前端javascript发送ajax请求、后台书写function小案例的更多相关文章
- easyUi 学习笔记 (二 ) 使用tabs 里datagridview 发送ajax请求 不访问后台的问题
这个BUG 我花了一个半小时, 还是看不出哪里的问题, 于是就百度到这么一段话,我需要记住 <================================================= ...
- C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求
C# 动态创建SQL数据库(二) 使用Entity Framework 创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...
- Jquery发送ajax请求以及datatype参数为text/JSON方式
Jquery发送ajax请求以及datatype参数为text/JSON方式 1.方式一:datatype:'text' 2.方式二:datatype:'JSON' 3.使用gson-1.5.jar包 ...
- C#WebForm里面aspx,ajax请求后台。。。
虽然WebForm里面有那些基本控件,后台CS里面也有许许多多的控件的方法.但是不见得有些标签不需要进行后台的访问,下面介绍一下三种aspx中访问后台的方式.. 第一种:WebMethod (静态方法 ...
- 发送ajax请求时候注意的问题
1.在发送ajax请求一般都是默认为异步,就是不去等待后台响应直接可以继续发送, 但这样会有时候遇到一些问题,无法获得后台的响应参数, 所以在你打开编辑弹出框完成数据编辑后无法刷新页面, 这时候可能存 ...
- 在发送ajax请求时加时间戳或者随机数去除js缓存
在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的 ...
- 原生js发送ajax请求
堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...
- JQuery发送ajax请求不能用数组作为参数
JQuery发送ajax请求不能用数组作为参数,否则会接收不到参数, 一.js代码如下: $('#delete-button').click(function(){ var select ...
- ajax请求后台,返回json格式数据,模板!
添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术.将返回的json格式数据,添加到select标签下. <script type="te ...
随机推荐
- dubbo的代码项目结构
dubbo 的项目(Project)包含下面模块(Module): 这些模块的功能描述如下: dubbo-admin dubbo的管理平台 dubbo-demo 包含生产者.消费者.接口定义的du ...
- Golang 图片上绘制文字
之前介绍过使用 FreeType-go 来绘制字(http://www.cnblogs.com/ghj1976/p/3445568.html), 现在相关的包被做了整合,主要是整合到了 github ...
- Linux(Ubuntu)下MySQL的安装与配置
转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...
- [SQL]reName存储过程
exec sp_helptext aa--应用sp_helptext查看存储过程的定义文本 exec sp_depends aa --通过sp_depends查看存储过程的相关性 exec sp_he ...
- [HDU 5074] Hatsune Miku (动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5074 题目大意是给你m个note,n个数,得分是v[a[i]][a[i+1]]的总和,如果说a[i]是 ...
- HDU 4292 Food
Food Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- fw: firefox plugin
http://blog.csdn.net/fancycow/article/details/7261191 firefox的插件分两种类型,一种extension,叫扩展,一种是plugin,我们叫插 ...
- python 简单实现文件拷贝
1.背景 一日加班需要写一个文件拷贝的函数. 写了几版拷贝函数,有需要的直接粘贴过去 def CopyLocaleFile1(sorfile,desfile): #第一版 sorfp=open(sor ...
- C#程序用Inno Setup打包,以管理员身份运行的处理方法
一.C#项目端的处理 目标:快捷方式有带盾的标识 在源码的Properties目录中找到 app.manifest,将其中level="asInvoker" 改成 level=&q ...
- 算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification)
算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification) 0.写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比 ...