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小案例的更多相关文章

  1. easyUi 学习笔记 (二 ) 使用tabs 里datagridview 发送ajax请求 不访问后台的问题

    这个BUG 我花了一个半小时, 还是看不出哪里的问题,  于是就百度到这么一段话,我需要记住 <================================================= ...

  2. C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求

    C# 动态创建SQL数据库(二) 使用Entity Framework  创建数据库与表 前面文章有说到使用SQL语句动态创建数据库与数据表,这次直接使用Entriy Framwork 的ORM对象关 ...

  3. Jquery发送ajax请求以及datatype参数为text/JSON方式

    Jquery发送ajax请求以及datatype参数为text/JSON方式 1.方式一:datatype:'text' 2.方式二:datatype:'JSON' 3.使用gson-1.5.jar包 ...

  4. C#WebForm里面aspx,ajax请求后台。。。

    虽然WebForm里面有那些基本控件,后台CS里面也有许许多多的控件的方法.但是不见得有些标签不需要进行后台的访问,下面介绍一下三种aspx中访问后台的方式.. 第一种:WebMethod (静态方法 ...

  5. 发送ajax请求时候注意的问题

    1.在发送ajax请求一般都是默认为异步,就是不去等待后台响应直接可以继续发送, 但这样会有时候遇到一些问题,无法获得后台的响应参数, 所以在你打开编辑弹出框完成数据编辑后无法刷新页面, 这时候可能存 ...

  6. 在发送ajax请求时加时间戳或者随机数去除js缓存

    在发送ajax请求的时候,为了保证每次的都与服务器交互,就要传递一个参数每次都不一样,这里就用了时间戳 大家在系统开发中都可能会在js中用到ajax或者dwr,因为IE的缓存,使得我们在填入相同的值的 ...

  7. 原生js发送ajax请求

    堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...

  8. JQuery发送ajax请求不能用数组作为参数

    JQuery发送ajax请求不能用数组作为参数,否则会接收不到参数, 一.js代码如下: $('#delete-button').click(function(){        var select ...

  9. ajax请求后台,返回json格式数据,模板!

    添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术.将返回的json格式数据,添加到select标签下. <script type="te ...

随机推荐

  1. delphi的tserversocket控件如何接收16进制数

    http://bbs.csdn.net/topics/390473005 对方客户端发送数据如:68 00 00··········:接收完成后,数据长度没错(13),但是显示接收结果时,只显示一个字 ...

  2. Delphi 通信报Asynchronous socket error 10053错误的一个解决方法

    在使用Delphi中的TClientSocket和TServerSocket进行通信编程时,当使用TClientSocket这方的客户端使用TClientSocket.close断开连接并退出程序时, ...

  3. WPF更新数据源

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windo ...

  4. 图标的使用————JAVA——Swing

    public class MyImageIcon extends JFrame{    public MyImageIcon()    {    JFrame jf=new JFrame();     ...

  5. java类总结

    1.java类与类之间存在六种关系:继承,实现,依赖,关联,聚合组成 2.一个类可以继承另外一个类,并在此基础上添加自己的特有的功能. 3.一个类的方法中操作另外一个类的对象,这种情况称为第一个类依赖 ...

  6. @SessionAttributes与HttpSession

    SessionAttributes注解将model中与它同名的属性保存在HttpSession中. 在controller的方法执行完毕后处理SessionAttributes注解并保存的,是Hand ...

  7. oracle 内存结构 share pool sql解析的过程

    1.sql解析的过程 oracle首先将SQL文本转化为ASCII字符,然后根据hash函数计算其对应的hash值(hash_value).根据计算出的hash值到library cache中找到对应 ...

  8. C语言之实现控制台光标随意移动

    原理引入windows.h,首先是要获得输入的东西,然后通过判断: 1.方向键:执行上下左右的移动功能 2:回车键:执行换行的功能. 3.普通键:输入功能. 终点就是要获取到屏幕上的坐标,当按下了方向 ...

  9. 如何设置修改WPS批注上的用户信息名称

    http://jingyan.baidu.com/article/6b18230953cec7ba59e1596b.html 点击左上角的“WPS文字”:   选择“选项”:   点击“用户信息”: ...

  10. JavaScript 变量克隆和判断变量类型

    一.变量克隆 在js中经常会遇到将一个变量赋值给一个新的变量这种情况,这对于基本类型很容易去实现,直接通过等号赋值就可以了,对于引用类型就不能这样了.(注:像函数,正则也可以直接通过等号赋值) 这里我 ...