文档章节

ajax初体验

ziluopao
 ziluopao
发布于 2016/05/23 18:30
字数 619
阅读 22
收藏 0

一直以来对于ajax的逻辑似懂非懂,主要是这种技术牵涉的东西太多,比如后台数据的获取及和前端的结合,说起来容易,但做起来难,原因是还没有掌握ajax骨干方面的东西,并且也不知道如何测试,后来做shopnc商城,读取源码,试着自己做了个点击数的ajax,没想到竟然有点门了。

比如先要理顺ajax代码的主要骨干,先把它理出来,具体里面的一些细节就好办了。

(function($) {
    $.fn.microshop_click = function() {
        
        
        return this.each(function() {
            
            $(this).click(submit_like);
        });
        function submit_like() {
            
            $.getJSON("index.php?act=like&op=click_result",  function(json){
                
            });
        }
        
        
    }
})(jQuery);

服务器端的是

public function click_resultOp(){
//        $model_micro = Model('micro_store');
//        $result = $model_micro->getClassStoreNav(array('microshop_store_id' => array(3)),null,'comment_count','comment_count','');
//        self::echo_json($result);
//        //print_r(self::echo_json($result));
//    }
        $arr = array('name'=>'李三','age'=>34,'sex'=>'男');
        self::echo_json($arr);
    }

测试时在地址栏中输入http://localhost/microshop/index.php?act=like&op=click_result

就可以得到服务器传来的json数据,测试时可以用chrome中的F12中的network,其中preview里可以看见json格式



现在回想一下为啥ajax容易学,但不容易掌握,主要是服务器端的玩法不理解,就拿shopnc的喜欢数来分析:

public function like_saveOp() {

        $data = array();
        $data['result'] = 'true';
        $data['message'] = Language::get('microshop_like_success');
        
        $like_id = intval($_GET['like_id']);
        $like_type = self::get_channel_type($_GET['type']);
        if($like_id <= 0 || empty($like_type)) {
            $data['result'] = 'false';
            $data['message'] = Language::get('wrong_argument');
            //echo $data['message'];
            self::echo_json($data);
            //echo $like_id.'-------------';
        }

        if(!empty($_SESSION['member_id'])) {
            $param = array();
            $param['like_type'] = $like_type['type_id']; 
            $param["like_object_id"] = $like_id;
            $param['like_member_id'] = $_SESSION['member_id'];
            $model_like = Model('micro_like');
            $is_exist = $model_like->isExist($param); 
            if(!$is_exist) {
                $param['like_time'] = time();
                $result = $model_like->save($param);
                if($result) {

                    //喜欢计数加1
                    $model = Model();
                    $update = array();
                    $update['like_count'] = array('exp','like_count+1');
                    $condition = array();
                    $condition[$like_type['type_key']] = $like_id;
                    $model->table("micro_{$_GET['type']}")->where($condition)->update($update);

                    //返回信息
                    $data['result'] = 'true';
                } else {
                    $data['result'] = 'false';
                    $data['message'] = Language::get('nc_common_save_fail');
                }
            } else {
                $data['result'] = 'false';
                $data['message'] = Language::get('microshop_like_fail');
            }
        } else {
            $data['result'] = 'false';
            $data['message'] = Language::get('no_login');
        }
        
        self::echo_json($data);
        //echo $like_id.'-------------';
    }

其中 $like_id = intval($_GET['like_id']);是通过ajax服务器中的数据请求地址http://localhost/microshop/index.php?act=like&op=like_save&type=store&like_id=6来获得的,如地址中有这个参数like_id=6这样intval($_GET['like_id'])就派上用场了。那么这里为啥要搞一个html页面中的id值呢,这里就是一个技巧,因为这个值就是店铺的id,另外这里还有一个不符合html规范的写法,即一个页面中有很多like_id,不过这并不影响正确显示,并且这里用很多重复的like_id主要是因为取值时,sql条件要用到店铺这个id号。

© 著作权归作者所有

ziluopao

ziluopao

粉丝 10
博文 357
码字总数 201109
作品 0
武汉
私信 提问
[Ajax-相濡以沫,不如相忘于江湖] Ajax初识

Ajax的全称是 Asynchronous JavaScript And XML,即异步JavaScript和XML。2005年由Jesse James Garrett首先提出。在之后极短的时间内,Ajax被广泛应用到大量B/S结构的应用中,改进了传统的W...

LSantorini
2016/01/26
39
0
AJAX基础(一)——AJAX简介

你是什么?(AJAX简介) AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。   主要包含了以下几种技术:   Ajax(Asy...

白志华
2015/09/28
168
0
ES6 Generator 初体验

ES6 Generator 初体验 听说 ES6 的 Generator 是一个很神奇的函数,所以去了解了一下。 因为它不同于以往的寻常函数,但是带来的体验却非常好 。这里首先讲了 Generator 是什么,分割线后面用...

ArcoIris
2016/05/24
480
4
URLSearchParams初体验

在之前发的工具方法文章的留言中有人就关于验证网址的操作时可以使用URL对象,之后有人提到了URLSearchParams这个URL对象接口。由于之前没有接触过,所以搜索了一下具体的用处,发现这个接口...

冷星1024
05/07
0
0
深入简出 好程序员教你HTML5开发基本常识

1.什么是HTML5开发工程师? HTML5开发工程师是协调HTML5设计师、后端程序员实现网站页面或程序界面,优化交互体验的一个职位。 2.HTML5开发工程师需要掌握哪些职业技能?   市场非常需要精通...

好程序员IT
06/12
27
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
19分钟前
2
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
3
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部